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