【问题标题】:Android TableLayout make all buttons same sizeAndroid TableLayout 使所有按钮大小相同
【发布时间】:2013-09-30 16:50:38
【问题描述】:

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

【问题讨论】:

    标签: android


    【解决方案1】:

    试试这个: 如果您不想填满整个屏幕,请删除 TableRows 中主 TableLayoutweightSum 和相应的 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>
    

    这应该可以工作

    【讨论】:

    • 这仍然使列的宽度不均匀。
    • 你可以通过添加我的代码发布你得到的布局图片吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      <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>
      

      我想这就是你想要的..

      【讨论】:

        【解决方案4】:

        使用 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>
        

        【讨论】:

        • 这并没有改变我的布局,第一列和第三列仍然比其他列更大,因为文本更多。
        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2014-12-20
          • 2015-11-15
          • 2013-04-29
          • 2014-03-07
          • 2014-03-11
          • 2018-05-31
          • 2013-02-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多