将RelativeLayout分成两半

时间:2013-08-26 03:07:46

标签: android android-layout

您好我创建了一个包含2个按钮,一个单选按钮和一个图表视图的RelativeLayout。

我想现在在图表中显示两个不同的数据。

如何将RelativeLayout分成两半?

这是我目前的XML代码:

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

    <Button
        android:id="@+id/BtnStart"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="5dip"
        android:text="SlaveEnable" />

    <Button
        android:id="@+id/BtnStop"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="5dip"
        android:layout_toRightOf="@id/BtnStart"
        android:text="SlaveDisable" />

    <RadioButton
        android:id="@+id/BtnSaveFile"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@id/BtnStop"
        android:text="SaveFile" />

    <helog.diwesh.NugaBest.GraphView
        android:id="@+id/gview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/BtnStart"
        android:layout_alignParentRight="true" />

</RelativeLayout>

4 个答案:

答案 0 :(得分:16)

所以,为此,我发现的最佳方式(感觉就像一个完全黑客,但就像魅力一样)是将零大小的视图与布局的中心对齐,然后对齐左半部分在该视图的左侧,将该视图的右半部分与右侧对齐。例如:

<?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" >

    <View
        android:id="@+id/anchor"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_centerInParent="true" />

    <Button
        android:id="@+id/left_side"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/anchor"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="5dip"
        android:text="Left Side" />

    <Button
        android:id="@+id/right_side"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/anchor"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="5dip"
        android:text="Right Side" />

</RelativeLayout>

答案 1 :(得分:5)

使用Linearlayout而不是RelativeLayout.LinearLayout,您可以使用LinearLayout的 layout_weight 属性,根据需要垂直或水平地将屏幕划分为两个部分。

使用layout_weight,您可以指定多个视图之间的大小比率。例如。你有一个MapView和一个表,它应该向地图显示一些额外的信息。地图应使用屏幕的3/4,表格应使用屏幕的1/4。然后,您将地图的layout_weight设置为3,将表格的layout_weight设置为1.

编写如下代码,将屏幕分为两部分。

<LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:weightSum="2"
        android:orientation="vertical">
    <LinearLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:layout_weight="1">
    </LinearLayout>
    <LinearLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:layout_weight="1">
    <LinearLayout>

在代码中 android:orientation 是指定方向,如果你使用垂直,那么它将垂直激活它的子节点,如果你指定水平,那么它将水平排列它的子节点。

答案 2 :(得分:2)

试试这个布局。如果不完美,这应该适用于一些变化。这将添加两个图表。

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

    <Button
        android:id="@+id/BtnStart"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="5dip"
        android:text="SlaveEnable" />

    <Button
        android:id="@+id/BtnStop"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="5dip"
        android:layout_toRightOf="@id/BtnStart"
        android:text="SlaveDisable" />

    <RadioButton
        android:id="@+id/BtnSaveFile"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@id/BtnStop"
        android:text="SaveFile" />

<LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
            android:layout_above="@id/BtnStart"
            android:layout_alignParentRight="true"
        android:orientation="vertical" 
    android:weightSum="2" >

    <helog.diwesh.NugaBest.GraphView
                android:id="@+id/gview1"
                android:layout_height="0dp"
                android:layout_width="match_parent"
        android:layout_weight="1" />

    <helog.diwesh.NugaBest.GraphView
                android:id="@+id/gview2"
                android:layout_height="0dp"
                android:layout_width="match_parent"
        android:layout_weight="1" />

</LinearLayout>

</RelativeLayout>

答案 3 :(得分:0)

这应该有效。我使用RelativeLayout移除LinearLayout以使用layout_weight

<?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:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight=".50" >

        <Button
            android:id="@+id/BtnStart"
            android:layout_width="100dip"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dip"
            android:text="SlaveEnable" />

        <Button
            android:id="@+id/BtnStop"
            android:layout_width="100dip"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dip"
            android:text="SlaveDisable" />

        <RadioButton
            android:id="@+id/BtnSaveFile"
            android:layout_width="100dip"
            android:layout_height="wrap_content"
            android:text="SaveFile" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight=".50" >

        <helog.diwesh.NugaBest.GraphView
            android:id="@+id/gview"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

</LinearLayout>