使所有按钮具有相同的尺寸

时间:2014-04-10 14:34:36

标签: android android-layout button relativelayout

我正在尝试使用中间的三个按钮进行布局。我稍后会在右上角再添加2个按钮,但是现在我正试图让它与这3个按钮一起使用。

这就是我的想法:

My idea

并且在某种程度上它应该在每个屏幕尺寸上都相似(因此随着屏幕尺寸变小,按钮会变小)。

现在这就是我所拥有的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<Button
    android:id="@+id/multiplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@drawable/menubutton"
    android:text="@string/multiplayer" />

<Button
    android:id="@+id/options"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/multiplay"
    android:layout_below="@+id/multiplay"
    android:background="@drawable/menubutton"
    android:text="@string/options" />

<Button
    android:id="@+id/singleplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/multiplay"
    android:layout_alignLeft="@+id/multiplay"
    android:background="@drawable/menubutton"
    android:text="@string/singleplayer"
 />

在大屏幕上看起来很好,但是在较小的情况下会发生这种情况:

On very small screen

我用谷歌搜索过,大多数页面建议使用“重量”,但显然只适用于线性布局。有什么建议吗?

由于

2 个答案:

答案 0 :(得分:1)

你应该使用重量,这样你可以均匀地分配屏幕上的按钮,无论屏幕是什么。

这里是RelativeLayout中LinearLayour的一个例子。 (如果RelativeLayout中没有其他内容,则可以使用LinearLayout替换RelativeLayout)

你应该玩一点,以符合你的要求。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="3" >

<Button
    android:id="@+id/multiplay"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:layout_centerHorizontal="true"
    android:background="@drawable/menubutton"
    android:text="@string/multiplayer" />

<Button
    android:id="@+id/options"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:layout_centerHorizontal="true"
    android:background="@drawable/menubutton"
    android:text="@string/options" />

<Button
    android:id="@+id/singleplay"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:layout_centerHorizontal="true"
    android:background="@drawable/menubutton"
    android:text="@string/singleplayer"
 />

    </LinearLayout>

</RelativeLayout>

答案 1 :(得分:1)

试试这个..

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="vertical" >

        <Button
            android:id="@+id/multiplay"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/menubutton"
            android:text="@string/multiplayer" />

        <Button
            android:id="@+id/options"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/menubutton"
            android:text="@string/options" />

        <Button
            android:id="@+id/singleplay"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/menubutton"
            android:text="@string/singleplayer" />
    </LinearLayout>

</RelativeLayout>