Android TableLayout使所有按钮的大小相同

时间:2013-09-30 16:50:39

标签: android

我正在制作一个自定义拨号器,并希望所有按钮的大小相同,但是因为某些文本比其他按钮长(例如" 7"按钮有" PQRS"在它之下)它延伸了一些列。以下是我目前正在做的事情,我做错了什么?

<TableLayout
    android:id="@+id/tableView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="*" >
    <TableRow
        android:layout_weight="1"
        android:gravity="center" >
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_one" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_two" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_three" />
    </TableRow>
    <TableRow
        android:layout_weight="1"
        android:gravity="center" >
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_four" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_five" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_six" />
    </TableRow>
    <TableRow
        android:layout_weight="1"
        android:gravity="center" >
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_seven" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_eight" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_nine" />
    </TableRow>
    <TableRow
        android:layout_weight="1"
        android:gravity="center" >
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_star" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_zero" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:soundEffectsEnabled="false"
            android:textSize="20sp"
            android:text="@string/dialer_pound" />
    </TableRow>
</TableLayout>

5 个答案:

答案 0 :(得分:3)

试试这个: 如果您不想填满整个屏幕,请移除主要weightSum的{​​{1}}和TableRows中相应的TableLayout

layout_weight

这应该有效

答案 1 :(得分:1)

使用线性布局代替表格布局,并为所有按钮设置权重= 1。它会给你你想要的积极结果..

答案 2 :(得分:0)

<TableLayout
android:id="@+id/tableView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="*"

 xmlns:android="http://schemas.android.com/apk/res/android">
<TableRow
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
    >
    <Button
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_one" />
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_two" />
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_three" />
</TableRow>
<TableRow
    android:layout_width="fill_parent"
   android:layout_height="wrap_content">
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_four" />
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_five" />
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_six" />
</TableRow>
<TableRow
    android:layout_width="fill_parent"
   android:layout_height="wrap_content">
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_seven" />
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_eight" />
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_nine" />
</TableRow>
<TableRow
    android:layout_width="fill_parent"
   android:layout_height="wrap_content" >
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_star" />
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_zero" />
    <Button
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:soundEffectsEnabled="false"
        android:textSize="20sp"
        android:text="dialer_pound" />
</TableRow>

我认为这就是你想要的......

答案 3 :(得分:0)

使用WeightSum和Weight 以使所有按钮的宽度相等,

 <TableRow
            android:layout_weight="1"
            android:gravity="center"
            android:weightSum="3" >

            <Button
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:soundEffectsEnabled="false"
                android:text="@string/dialer_one"
                android:textSize="20sp" />

            <Button
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:soundEffectsEnabled="false"
                android:text="@string/dialer_two"
                android:textSize="20sp" />

            <Button
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:soundEffectsEnabled="false"
                android:text="@string/dialer_three"
                android:textSize="20sp" />
        </TableRow>

答案 4 :(得分:0)

事实证明,按钮的大小各不相同,因为我的按钮文字周围的默认填充太高了。