我有inputMethodService
来控制软键盘。这是
@Override
public View onCreateInputView() {
LayoutInflater lInflate = getLayoutInflater();
Resources res = getResources();
LinearLayout inputView = (LinearLayout) lInflate.inflate(R.layout.copypasta, null);
Button tab_navySeal = (Button) inputView.findViewById(R.id.tab_navySeal);
Button tab_thatsome = (Button) inputView.findViewById(R.id.tab_thatsome);
Button tab_thethingis = (Button) inputView.findViewById(R.id.tab_thethinggis);
Button tab_identify = (Button) inputView.findViewById(R.id.tab_identify);
Button tab_othercopypasta = (Button) inputView.findViewById(R.id.tab_otherpasta);
int sW = res.getDisplayMetrics().widthPixels;
int bWidth = sW/5;
Log.i("DEBUG_TAG", Integer.toString(bWidth));
if(bWidth > 100) {
tab_navySeal.setWidth(bWidth);
tab_identify.setWidth(bWidth);
tab_thatsome.setWidth(bWidth);
tab_thethingis.setWidth(bWidth);
tab_othercopypasta.setWidth(bWidth);
}
return inputView;
}
此代码的目的是,如果屏幕足够大,按钮将分别是屏幕宽度的1/5。否则,如果屏幕较小,按钮将只是100dp(这很好,因为它们被包裹在HorizontalScrollView
中)。
但是,当我打开软键盘时,实际上并没有发生任何事情。
以下是问题的图片:
顶部的按钮应分别为屏幕的1/5而不是100dp宽。重要的是,每个按钮的宽度在XML中设置为100dp(尽管我认为不重要,因为以编程方式设置宽度应该覆盖XML)。
答案 0 :(得分:1)
您可以尝试使用新的宽度设置LayoutParams
-
tab_navySeal.setLayoutParams (new LayoutParams(bWidth, LayoutParams.WRAP_CONTENT);
答案 1 :(得分:1)
不幸的是,设计Android的人认为程序员太愚蠢,以至于不知道自己想在应用程序中放置什么内容,而愚蠢地想知道自己想要的东西大小。因此,诸如setWidth之类的方法不会设置宽度。您必须通读有关版式的页面和废话,甚至可以远程接近可行的内容。抱歉,我对布局没有足够的了解,但我很高兴您已经强调了Android在这一领域的设计水平。