Android button.setWidth()没有做任何事情

时间:2016-04-18 22:38:27

标签: android android-button

我有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中)。

但是,当我打开软键盘时,实际上并没有发生任何事情。

以下是问题的图片:

enter image description here

顶部的按钮应分别为屏幕的1/5而不是100dp宽。重要的是,每个按钮的宽度在XML中设置为100dp(尽管我认为不重要,因为以编程方式设置宽度应该覆盖XML)。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用新的宽度设置LayoutParams -

tab_navySeal.setLayoutParams (new LayoutParams(bWidth, LayoutParams.WRAP_CONTENT);

答案 1 :(得分:1)

不幸的是,设计Android的人认为程序员太愚蠢,以至于不知道自己想在应用程序中放置什么内容,而愚蠢地想知道自己想要的东西大小。因此,诸如setWidth之类的方法不会设置宽度。您必须通读有关版式的页面和废话,甚至可以远程接近可行的内容。抱歉,我对布局没有足够的了解,但我很高兴您已经强调了Android在这一领域的设计水平。