Android button.setWidth() 什么都不做
Android button.setWidth() not doing anything
我有一个控制软键盘的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)。
您可以尝试使用这样的新宽度设置 LayoutParams
-
tab_navySeal.setLayoutParams (new LayoutParams(bWidth, LayoutParams.WRAP_CONTENT);
不幸的是,设计 Android 的人认为程序员太愚蠢,不知道他们想把东西放在应用程序中的什么地方,也太愚蠢,不知道他们想要东西的大小。因此像 setWidth 这样的方法不会设置宽度。你必须通读一页又一页关于布局的废话,才能离有效的东西更近一步。抱歉,我对布局了解不够,无法提供帮助,但我很高兴您强调了 Android 在这方面的设计有多糟糕。
我有一个控制软键盘的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)。
您可以尝试使用这样的新宽度设置 LayoutParams
-
tab_navySeal.setLayoutParams (new LayoutParams(bWidth, LayoutParams.WRAP_CONTENT);
不幸的是,设计 Android 的人认为程序员太愚蠢,不知道他们想把东西放在应用程序中的什么地方,也太愚蠢,不知道他们想要东西的大小。因此像 setWidth 这样的方法不会设置宽度。你必须通读一页又一页关于布局的废话,才能离有效的东西更近一步。抱歉,我对布局了解不够,无法提供帮助,但我很高兴您强调了 Android 在这方面的设计有多糟糕。