我有一组水平布局的按钮。我已经设置了一个可绘制的图像作为每个按钮的背景。但是当我使线性布局跨越屏幕宽度时,按钮会失去纵横比。我希望保持其宽高比不变。我的意思是我必须在整个应用程序中保持它的方形形状,无论屏幕分辨率如何。我怎样才能做到这一点。任何建议都表示赞赏。
这是我的XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_background"
android:baselineAligned="false"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/answer_bg"
android:padding="10dip" >
<Button
android:id="@+id/b2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/img_background"
android:height="50dip"
android:text="@string/x"
android:textStyle="bold" />
<Button
android:id="@+id/b3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/img_background"
android:height="50dip"
android:text="@string/x"
android:textStyle="bold" />
<Button
android:id="@+id/b4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/img_background"
android:height="50dip"
android:text="@string/x"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
谢谢
答案 0 :(得分:3)
我对您的XML进行了改进。我没有测试它,但它应该工作。建议的更改是,而不是将图像设置为背景,将其设置为ImageButtons的src。此外,如果你坚持按钮,你可以用另一个布局包装每个按钮,并将其重力属性设置为&#34; center&#34;。请查看以下XML。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_background"
android:baselineAligned="false"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/answer_bg"
android:padding="10dip" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center" >
<Button
android:id="@+id/b2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/img_background"
android:height="50dip"
android:text="@string/x"
android:textStyle="bold" /></LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center" >
<Button
android:id="@+id/b3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/img_background"
android:height="50dip"
android:text="@string/x"
android:textStyle="bold" /></LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center" >
<Button
android:id="@+id/b4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/img_background"
android:height="50dip"
android:text="@string/x"
android:textStyle="bold" /></LinearLayout>
</LinearLayout>
</LinearLayout>
随意询问它是否无效。
答案 1 :(得分:0)
如果您想要精确的方形,则意味着您必须为相同的值设置宽度和高度。
如果您想在水平布局中使用相同形状的所有3个按钮而不考虑屏幕分辨率,请使用 layout_weight = 1 。根据我对布局的了解,只有这是解决方案。
答案 2 :(得分:0)
这里我使用重量布局你可以尝试这样。线性布局的重量,然后根据你的需要将按钮的宽度设置为0dp和重量。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_background"
android:baselineAligned="false"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/answer_bg"
android:padding="10dip"
android:weightSum="1" >
<Button
android:id="@+id/b2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".33"
android:background="@drawable/img_background"
android:text="@string/x"
android:textStyle="bold" />
<Button
android:id="@+id/b3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".33"
android:background="@drawable/img_background"
android:height="50dip"
android:text="@string/x"
android:textStyle="bold" />
<Button
android:id="@+id/b4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".33"
android:background="@drawable/img_background"
android:text="@string/x"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>