Android在相对布局中制作按钮宽度和高度的1/3

时间:2016-02-09 03:21:12

标签: android xml android-button android-relativelayout

我有一些XML。在这个XML中,相对布局中有一个按钮。相对布局占据整个屏幕。我希望按钮有1/3的屏幕宽度和高度。我怎么能这样做?

这是XML:

    <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:paddingBottom="0dp"
    tools:context="com.vroy.trapper.MainMenuActivity"
    android:layout_weight="2">

    <Button
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="@string/menu_button_text"
        android:background="@drawable/round_button"
        android:id="@+id/button"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        />
</RelativeLayout>

我查看了this个问题,但即使我为相对布局指定了权重,我也无法为按钮指定权重。

4 个答案:

答案 0 :(得分:13)

你可以在java代码中轻松完成。

在oncreate中编写此代码。

    Button b=(Button) findViewById(R.id.button);
    int width = getResources().getDisplayMetrics().widthPixels/3;
    int hei=getResources().getDisplayMetrics().heightPixels/3;
    b.setLayoutParams(new RelativeLayout.LayoutParams(width,hei));

答案 1 :(得分:4)

百分比支持库是您需要的。

这个库很容易使用,因为它与我们熟悉的RelativeLayout和FrameLayout相同,只是有一些额外的功能。

首先,由于Percent Support Library随附Android支持库23,因此请确保您已将SDK Manager中的Android支持库更新为最新版本。然后在 build.gradle 文件中添加如下所示的依赖项:

编译'com.android.support:percent:23.0.0'

现在回到你的问题,你可以做这样的事情来实现你的输出。希望它会对你有所帮助。

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

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@drawable/bird"
    android:text="Your text"
    app:layout_heightPercent="33%"
    app:layout_widthPercent="33%" />
</android.support.percent.PercentRelativeLayout>

答案 2 :(得分:2)

(编辑考虑宽度) 围绕线性布局包裹按钮。

<?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"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:gravity="center"
        android:weightSum="3" >
        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:gravity="center"
            android:weightSum="3">

            <Button
                android:id="@+id/button"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:layout_weight="1"
                android:text="@string/menu_button_text"
                android:background="@drawable/round_button"
                />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

如果您希望按钮位于右侧/左侧,请更改android:gravity等。这样,您仍然可以将相对布局用于其他周围的事物。

答案 3 :(得分:0)

使用LinearLayout而不是RelativeLayout来实现目标。

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <View
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        />
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"> 
        <View
             android:layout_width="wrap_content"
             android:layout_height="0dp"
             android:layout_weight="1"
             />
        <Button
             android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_weight="1"
             android:text="@string/menu_button_text"
             android:background="@drawable/round_button"
             android:id="@+id/button"/>
            <View
             android:layout_width="wrap_content"
             android:layout_height="0dp"
             android:layout_weight="1"
             />
    </LinearLayout>   
   <View
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        />

   </LinearLayout>

希望它有所帮助!!