Android按钮高度与宽度相同

时间:2018-02-06 20:32:55

标签: java android xml

在我的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>

1 个答案:

答案 0 :(得分:0)

我已经提出了一个解决方案,并经过测试和正常运作。

enter image description here

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);


        }
    });