如何限制Android中TableRow中按钮的宽度?

时间:2014-05-16 21:48:02

标签: android xml android-layout android-button android-tablelayout

我希望按钮的宽度尽可能小。布局文件中的我的XML是:

<TableRow
    android:id="@+id/tableRow7"
    android:paddingLeft="5dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <Button
        android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:text="@string/button_ok"
        android:layout_column="0"
        android:id="@+id/buttonOK" />

    <Button
        android:layout_width="20dp"
        android:maxWidth="20dp"
        android:layout_height="wrap_content"
        android:text="@string/button_cancel"
        android:layout_column="1"
        android:id="@+id/buttonCancel" />
</TableRow>

我试过&#34; wrap_content&#34;和&#34; fill_parent&#34;对于layout_width vals,但他们没有帮助。正如你所看到的,我也尝试过&#34; maxWidth&#34;财产,无济于事。这是它的样子:

enter image description here

那么如何将按钮的宽度限制为&#34;足够的&#34;包含其文本?我想要&#34;取消&#34;按钮的宽度与&#34; OK&#34;大致相同;按钮,或者根据需要包含其文本。

2 个答案:

答案 0 :(得分:1)

  

那么如何将按钮的宽度限制为“足够”以包含其文本?

理想情况下,从表格中删除它(和“确定”按钮)。

TableLayout背后的一点是给你一些让人想起HTML表格的特征,特别是对于像我这样在1990年以前的CSS Web开发中过量使用HTML表格的灰胡子。

在HTML表格中,单元格会展开以填充列中最宽单元格的宽度。同样的事情 - 取消按钮的宽度由其列决定,我认为它位于由条形图条控制的列中。

从截图中,TableLayout中唯一应该是四行条形图本身。 “编辑列表”标签(?),单选按钮和确定/取消按钮应位于TableLayout下方。如果您希望“确定”和“取消”按钮的宽度相同,请为它们使用水平LinearLayout,为每个按钮赋予宽度0dp,并为每个按钮赋予1的权重。

答案 1 :(得分:0)

我明白了 - 保证金属性可以成为你的朋友。我将其添加到“取消”按钮,该按钮已减少到:

<Button
    android:layout_marginRight="9![enter image description here][1]0dp"
    android:text="@string/button_cancel"
    android:layout_column="1"
    android:id="@+id/buttonCancel" />

...现在看起来更像是我喜欢的:

enter image description here

更新

普通发誓有一个好主意:

<LinearLayout
    android:id="@+id/tableRow7"
    android:paddingLeft="112dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_ok"
        android:id="@+id/buttonOK" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_cancel"
        android:id="@+id/buttonCancel" />
</LinearLayout>