1

同じサイズのボタンの XML グリッド テーブル レイアウト メニューがあり、電話の解像度に応じてボタンのサイズが変わります。アイデアは、メニューが同じサイズのボタンで画面いっぱいになるようにすることです。これは、ボタンにテキスト ラベルがない場合に最適です。しかし、ボタンにテキストを追加するとすぐに、ボタンの幅もテキストの影響を受けます。テキストサイズを小さいサイズに変更すると、ボタンのサイズが自動的に変更され、他のボタンよりも小さくなります。例: ボタン A の名前は「ホーム」 ボタン B の名前は「通知」 私の問題は、ボタン B がボタン A よりも大きくなることです。XML レイアウトも添付します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="4dp"
    android:background="#2b2c31"
    android:orientation="vertical"  >

    <include
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        layout="@layout/layout_topheader" />


        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="10dp"
            android:stretchColumns="*" >

                <TableRow 
            android:layout_weight="1"
            android:gravity="center"
            android:padding="10dp" >

                    <Button
                        android:id="@+id/buttonScan"
                        android:layout_width="fill_parent" 
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:background="@drawable/btn"
                        android:text="Refill"                            
                        android:layout_margin="10dp"
                        android:textColor="@color/status_text"
                        android:textSize="30dip"
                        android:textStyle="bold" />

                    <Button
                        android:id="@+id/buttonSetReminder"
                       android:layout_width="fill_parent"                              
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:background="@drawable/btn"
                        android:text="Reminders"                         
                        android:layout_margin="10dp"
                        android:textColor="@color/status_text"
                        android:textSize="30dip"
                        android:textStyle="bold" />

                 </TableRow>

                 <TableRow 
            android:layout_weight="1"
            android:gravity="center"
            android:padding="10dp" >

                    <Button
                        android:id="@+id/buttonRewards"
                        android:layout_width="fill_parent"                             
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:background="@drawable/btn" 

                        android:layout_margin="10dp"
                        android:textSize="30dip"
                        android:textColorHint="@color/status_text" 
                        android:textColor="@color/status_text"
                        android:text="Rewards"
                        android:textStyle="bold" />

                    <Button
                        android:id="@+id/buttonTracker"
                        android:layout_width="fill_parent"                            
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:background="@drawable/btn"
                        android:text=" Tracker"

                        android:layout_margin="10dp"
                        android:textColor="@color/status_text"
                        android:textSize="30dip"
                        android:textStyle="bold" />

                 </TableRow>

                 <TableRow 
                    android:layout_weight="1"
                    android:gravity="center"
                    android:padding="10dp" >

                    <Button
                        android:id="@+id/buttonProfile"
                        android:layout_width="fill_parent"                             
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:background="@drawable/btn"
                        android:text="Profile"                           
                        android:layout_margin="10dp"
                        android:textColor="@color/status_text"
                        android:textSize="30dip"
                        android:textStyle="bold" />

                    <Button
                        android:id="@+id/buttonChat"
                        android:layout_width="fill_parent"                             
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:background="@drawable/chaticon"
                        android:text="Chat"                           
                        android:layout_margin="10dp"
                        android:textColor="@color/status_text"
                        android:textSize="30dip"
                        android:textStyle="bold" />

                 </TableRow>

                  <LinearLayout
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:background="#ffffff"
             android:orientation="vertical" >


                <ImageView
                    android:id="@+id/imageView1"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:src="@drawable/add3" />

      </LinearLayout>                    

   </TableLayout>        

</LinearLayout>
4

1 に答える 1

0

それが最善の方法であるかどうかはわかりませんが、同様の問題があり、実行時に画面の寸法を取得することで解決しました:

    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);

次に、ボタンの幅を次のように設定します。int buttonWidth = displaymetrics.widthPixels/2;

最後に、最大および最小の幅/高さを buttonWidth として設定します

于 2012-11-22T09:35:23.643 に答える