您好我创建了一个包含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>
答案 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>