2013-09-30 112 views
0

我在定位这些视图时遇到问题。我想要像下面这样做。我有两个单选按钮(rb_),第一个广播旁边的编辑文本(et_)和第二个旁边的可扩展列表视图(lv_)。相对布局定位未按预期方式工作

enter image description here

我尝试下面的代码,但不能达到我想要的,在et_new_trip得到下推另一条线,而不是到rb_create_new权,lv_old_trip没有显示在所有。任何想法为什么?谢谢。

<RelativeLayout android:id="@+id/rl_trip" 
       android:layout_height="wrap_content" 
       android:layout_width="match_parent" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true"> 

    <RadioGroup android:id="@+id/rg_trip_creation" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
    > 
     <RadioButton android:id="@+id/rb_create_new" 
        style="@style/WrapContentWidthHeight" 
        android:text="New trip"/> 
     <EditText android:id="@+id/et_new_trip" 
        android:layout_height="30dp" 
        android:layout_width="200dp" 
        android:layout_toEndOf="@+id/rb_create_new" 
        android:layout_alignBottom="@+id/rb_create_new" 
        android:text="New Trip name"/> 

     <RadioButton android:id="@+id/rb_old_trip" 
        android:layout_height="30dp" 
        android:layout_width="200dp" 
        android:text="Previous trip"/> 
     <ExpandableListView 
      android:id="@+id/lv_old_trip" 
      android:layout_height="30dp" 
      android:layout_width="200dp" 
      android:layout_alignBottom="@+id/rb_old_trip" 
      android:layout_toEndOf="@+id/rb_old_trip" 
      /> 

    </RadioGroup> 

</RelativeLayout> 
+0

这是不是可以更容易,因为一个垂直的LinearLayout,包含于各行的水平的LinearLayout? –

+0

同意,linearlayout更容易 –

回答

0

您已经在无线电组内包含了相对布局,这是主要问题。这就是为什么它的行为如此。删除广播组,你的布局会很好。

下面ID布局

<RelativeLayout 
     android:id="@+id/rl_trip" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="30dp" > 

     <RadioButton 
      android:id="@+id/rb_create_new" 
      android:layout_width="100dp" 
      android:layout_height="wrap_content" 
      android:text="New trip" /> 

     <EditText 
      android:id="@+id/et_new_trip" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toEndOf="@+id/rb_create_new" 
      android:layout_toRighttOf="@+id/rb_create_new" 
      android:text="New Trip name" /> 

     <RadioButton 
      android:id="@+id/rb_old_trip" 
      android:layout_width="150dp" 
      android:layout_height="30dp" 
      android:layout_below="@+id/rb_create_new" 
      android:text="Previous trip" /> 

     <ExpandableListView 
      android:id="@+id/lv_old_trip" 
      android:layout_width="200dp" 
      android:layout_height="30dp" 
      android:layout_alignBottom="@+id/rb_old_trip" 
      android:layout_toEndOf="@+id/rb_old_trip" /> 
    </RelativeLayout> 

如果你希望他们在单选按钮,你可以这样做,但有一件事总是被照顾的是:比赛单选按钮的高度和相应的视图在右

<LinearLayout 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:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <LinearLayout 
     android:id="@+id/rl_trip" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 

     <RadioGroup 
      android:id="@+id/rg_trip_creation" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" > 

      <RadioButton 
       android:id="@+id/rb_create_new" 
       android:layout_width="wrap_content" 
       android:layout_height="40dp" 
       android:text="New trip" /> 

      <RadioButton 
       android:id="@+id/rb_old_trip" 
       android:layout_width="wrap_content" 
       android:layout_height="40dp" 
       android:text="Previous trip" /> 
     </RadioGroup> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:orientation="vertical" > 

      <EditText 
       android:id="@+id/et_new_trip" 
       android:layout_width="wrap_content" 
       android:layout_height="40dp" 
       android:text="New Trip name" /> 

      <ExpandableListView 
       android:id="@+id/lv_old_trip" 
       android:layout_width="wrap_content" 
       android:layout_height="40dp" 
       android:layout_alignBottom="@+id/rb_old_trip" 
       android:layout_toEndOf="@+id/rb_old_trip" /> 
     </LinearLayout> 
    </LinearLayout> 

</LinearLayout> 
+0

谢谢,但我的RadioGroup在Relativelayout内,而不是相反。 –

+0

我想保留RadioGroup的原因是只让一个选项被选中。 –

+0

让我为你尝试一下 –

0
<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:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 
    <RadioGroup 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 

      <RadioButton 
       android:id="@+id/radioButton1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 
       android:layout_marginTop="75dp" 
       android:text="RadioButton" /> 

      <RadioButton 
       android:id="@+id/radioButton2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_below="@+id/radioButton1" 
       android:layout_marginTop="30dp" 
       android:text="RadioButton" /> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignTop="@id/radioButton1" 
       android:layout_toRightOf="@id/radioButton1" 
       android:hint="et_new" /> 

      <ExpandableListView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_alignTop="@id/radioButton2" 
       android:layout_toRightOf="@id/radioButton2" > 

      </ExpandableListView> 
     </RelativeLayout> 
    </RadioGroup> 
</RelativeLayout>