如何设置按钮以填充行的每一半?

时间:2012-04-25 12:13:47

标签: android relativelayout android-linearlayout

在我的Android应用程序中,我有两个按钮,位于一行上方,显示一个地图。我希望每个按钮占据一半的行。谁能告诉我怎么做?

目前我的代码是:

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnProgram"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Program" />

    <Button
        android:id="@+id/btnAfisareStatii"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Afisaza toate statiile" 
        android:layout_toRightOf="@+id/btnProgram"/>

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/btnAfisareStatii" />

    <WebView
        android:id="@+id/webview2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/webview" />

    <com.google.android.maps.MapView
        android:id="@+id/mapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:apiKey="0ws8opHdf-pIbZUa916nju81kSSlPRK4Wbg_0vg"
        android:clickable="true"
        android:enabled="true" 
        android:layout_above="@id/btnProgram">
    </com.google.android.maps.MapView>

</RelativeLayout>

3 个答案:

答案 0 :(得分:2)

使用线性布局和layout_weight:

 <?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/button_container"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/btnProgram"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="Program" />

        <Button
            android:id="@+id/btnAfisareStatii"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/btnProgram"
            android:text="Afisaza toate statiile" />
    </LinearLayout>

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/btnAfisareStatii" />

    <WebView
        android:id="@+id/webview2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/webview" />

    <com.google.android.maps.MapView
        android:id="@+id/mapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/button_container"
        android:apiKey="0ws8opHdf-pIbZUa916nju81kSSlPRK4Wbg_0vg"
        android:clickable="true"
        android:enabled="true" >
    </com.google.android.maps.MapView>

</RelativeLayout>

但是,为什么要将网页视图放在按钮下方,这些按钮本身与屏幕底部对齐?

答案 1 :(得分:2)

将您的按钮放在LinearLayout中并为其指定layout_weight。然后将此LinearLayout放在RelativeLayout的底部。

<LinearLayout layout_width="fill_parent" layout_height="fill_parent">
  <Button
        android:id="@+id/btnProgram"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Program" />

    <Button
        android:id="@+id/btnAfisareStatii"
        android:layout_width="wrap_fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Afisaza toate statiile" />
</LinearLayout>

答案 2 :(得分:1)

将两个按钮放在LinearLayout内并设置android:orientation="horizontal"

如下所示。确保您拥有按钮的weight属性

<LinearLayout android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                 android:orientation="horizontal">
<Button
    android:id="@+id/button1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Button" android:layout_weight="1"/>
<Button
    android:id="@+id/button2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Button" android:layout_weight="1"/>

</LinearLayout> 

已更新

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/btnAfisareStatii" 
        android:layout_weight="1"/>

    <WebView
        android:id="@+id/webview2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/webview" 
         android:layout_weight="1"/>

    <com.google.android.maps.MapView
        android:id="@+id/mapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:apiKey="0ws8opHdf-pIbZUa916nju81kSSlPRK4Wbg_0vg"
        android:clickable="true"
        android:enabled="true" 
         android:layout_weight="1">
    </com.google.android.maps.MapView>

        <LinearLayout android:orientation="horizontal" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent"
       android:layout_weight="1">
          <Button
        android:id="@+id/btnProgram"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Program" 
        android:layout_weight="1"/>

    <Button
        android:id="@+id/btnAfisareStatii"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Afisaza toate statiile" 
        android:layout_toRightOf="@+id/btnProgram" android:layout_weight="1"/>

    </LinearLayout>
</LinearLayout>