2013-09-30 55 views
0

我正在製作自定義撥號程序,並且希望所有按鈕的大小相同,但因爲某些文本比其他文本長(例如,「7」按鈕在「PQRS」下面它)延伸出一些列。這是我目前正在做的,我做錯了什麼?Android TableLayout使所有按鈕的大小相同

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

回答

2

試試這個: 如果你不想來填補你的整個屏幕,然後取下主TableLayout和各自layout_weightweightSum在TableRows

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

這應該工作

+0

這仍然使列不均勻的寬度。 – ashishduh

+0

我修改了我的答案。試試吧 – Manishika

+0

仍然是同樣的問題。 – ashishduh

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> 

我想這是你想要的..

0

使用WeightSum並以具有相同的寬度這樣的所有按鈕重量

<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> 
+0

這完全沒有改變我的佈局,由於更多的文本,第一列和第三列仍比其他列大。 – ashishduh

1

使用線性佈局而不是表格佈局,並將所有對接的重量設置爲1附件。它會給你積極的結果你想要的..

0

事實證明,按鈕是所有不同的大小,因爲我的按鈕文本週圍的默認填充太高。

相關問題