在我的Android应用程序中我有3个按钮,我使用权重参数设置为屏幕宽度的33%。现在我希望这些按钮与宽度具有相同的高度,但是没有"硬编码"一个特定的高度,以适应不同的屏幕尺寸。
我该如何处理? 谢谢!
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/buttonPlus1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.33"
android:layout_margin="5dp"
android:background="@drawable/buttonstyle"
android:text="+1" />
<Button
android:id="@+id/buttonPlus5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.33"
android:layout_margin="5dp"
android:background="@drawable/buttonstyle"
android:text="+5" />
<Button
android:id="@+id/buttonPlus10"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.33"
android:layout_margin="5dp"
android:background="@drawable/buttonstyle"
android:text="+10" />
</LinearLayout>
答案 0 :(得分:0)
我已经提出了一个解决方案,并经过测试和正常运作。
在onCreate()
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1 = findViewById(R.id.button1);
b2 = findViewById(R.id.button2);
b3 = findViewById(R.id.button3);
layout = findViewById(R.id.linearContainerOfButton);
ViewTreeObserver vto = layout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
layout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
int width = b1.getWidth();
ViewGroup.LayoutParams params = b1.getLayoutParams();
Log.d(tag, "width " + width);
params.height = width;
b1.setLayoutParams(params);
b2.setLayoutParams(params);
b3.setLayoutParams(params);
}
});