我有一个大小相同的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>
答案 0 :(得分:0)
不确定这是否是最好的方法,但是,我遇到了类似的问题并通过在运行时获取屏幕尺寸解决了这个问题:
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
然后将按钮宽度设置为: int buttonWidth = displaymetrics.widthPixels / 2;
最后将最大和最小宽度/高度设置为buttonWidth