Android ::如何更改字体大小而不更改按钮大小?

时间:2012-11-22 09:32:57

标签: android-intent

我有一个大小相同的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>

1 个答案:

答案 0 :(得分:0)

不确定这是否是最好的方法,但是,我遇到了类似的问题并通过在运行时获取屏幕尺寸解决了这个问题:

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

然后将按钮宽度设置为:         int buttonWidth = displaymetrics.widthPixels / 2;

最后将最大和最小宽度/高度设置为buttonWidth