1

我正在制作一个自定义拨号器,并希望所有按钮的大小相同,但由于某些文本比其他文本长(例如“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>
4

5 回答 5

4

试试这个:如果你不想填满整个屏幕,那么删除TableRowsweightSum中的 mainTableLayout和各自的layout_weight

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/tableView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="*"
    android:weightSum="4" >

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:weightSum="3" >

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

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

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

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:weightSum="3" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:soundEffectsEnabled="false"
            android:gravity="center"
            android:text="dialer_four"
            android:textSize="20sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:soundEffectsEnabled="false"
            android:gravity="center"
            android:text="dialer_five"
            android:textSize="20sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:soundEffectsEnabled="false"
            android:gravity="center"
            android:text="dialer_six"
            android:textSize="20sp" />
    </TableRow>

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:weightSum="3" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:soundEffectsEnabled="false"
             android:gravity="center_vertical"
            android:text="dialer_seven"
            android:textSize="20sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:soundEffectsEnabled="false"
             android:gravity="center_vertical"
            android:text="dialer_eight"
            android:textSize="20sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:soundEffectsEnabled="false"
             android:gravity="center_vertical"
            android:text="dialer_nine"
            android:textSize="20sp" />
    </TableRow>

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:weightSum="3" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:soundEffectsEnabled="false"
            android:layout_gravity="center_vertical"
            android:text="dialer_star"
            android:textSize="20sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:soundEffectsEnabled="false"
             android:layout_gravity="center_vertical"
            android:text="dialer_zero"
            android:textSize="20sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:soundEffectsEnabled="false"
             android:layout_gravity="center_vertical"
            android:text="dialer_pound"
            android:textSize="20sp" />
    </TableRow>

</TableLayout>

这应该工作

于 2013-09-30T17:22:36.863 回答
1

使用线性布局而不是表格布局,并为所有按钮设置 weight=1。它会给你积极的结果你想要什么..

于 2013-09-30T17:17:25.610 回答
0

事实证明,这些按钮的大小都不同,因为我的按钮文本周围的默认填充太高了。

于 2013-10-07T19:04:09.140 回答
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>

我想这就是你想要的..

于 2013-09-30T16:57:07.297 回答
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>
于 2013-09-30T16:57:30.683 回答