Android XML中是否有一种方法可以创建一行宽度设置为最宽按钮的按钮?

时间:2011-01-12 21:42:37

标签: android xml layout android-linearlayout

有没有办法在XML中声明一行按钮,以便所有按钮具有相同的宽度,这等于最宽按钮的wrap_content宽度?我熟悉将所有宽度设置为0并将它们全部赋值为1的技巧,但如果父布局宽度设置为wrap_content,则无效。我不想将父宽度设置为fill_parent,因为我不希望按钮拉伸超过必要。

我能想到的唯一方法是在代码中(每个按钮中的onMeasure逻辑与其他按钮或自定义布局类通信)。

3 个答案:

答案 0 :(得分:0)

我认为你必须在代码中这样做。

创建自定义布局类将是最佳选择。覆盖onMeasure()并使其看起来像这样:

  1. 调用所有子项的setLayoutParams,将layout_widths设置为WRAP_CONTENT。
  2. 致电super.onMeasure()
  3. 迭代子视图以找到getMeasuredWidth()最大的视图。
  4. 使用最宽的像素宽度迭代调用setLayoutParams()的所有其他子视图。
  5. 再次调用super.onMeasure()。 :)

答案 1 :(得分:0)

要在XML中连续获取按钮,需要在LinearLayout中添加按钮并将orietnation更改为水平,即

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
</LinearLayout>

至于获取最宽的按钮并更改所有其他按钮以匹配我不确定猜测你必须在你的活动中有一些方法来获得最宽的按钮,然后programaticaly设置所有其他按钮是相同的。

答案 2 :(得分:0)

找出你最宽的按钮是什么,但它在一个水平宽度匹配的视图中,然后在&lt;中使用layout_width =“match_parent”或“fill_parent” 2.3。

它会使所有人都使用指定的宽度。

如果你想以编程方式进行,你需要迭代所有部分,找到最大值,然后再次迭代并设置它。