2012-06-30 2 views
0

Это кажется простым, но я исчерпал терпение поиска Google.Fill RelativeLayout родитель с LinearLayout child

У меня есть RelativeLayout, который бок о бок имеет два подчиненных LinearLayout s, и я хочу, чтобы они оба вертикально заполняли родителя, независимо от высоты двух LinearLayouts. Это используется как строка ListView, а содержимое под @ id/item_left обычно короче, чем указано справа.

Фоновый чертеж не заполняет всю строку.

Любые идеи по изготовлению обеих сторон?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout android:id="@+id/item_left" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:paddingRight="2dp" 
     android:paddingLeft="2dp" 
     android:background="@drawable/item_left" 
     android:orientation="vertical"> 
     <TextView android:id="@+id/time" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@color/item_left_text" 
      android:text="" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:background="@color/item_right_background" 
     android:layout_toRightOf="@id/item_left">   
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@color/item_right_text" 
      android:text="Row1" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@color/item_right_text" 
      android:text="Row2" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@color/item_right_text" 
      android:text="Row3" /> 
    </LinearLayout> 
</RelativeLayout> 
+0

, которую вы хотите, чтобы дать половину половины ширина для обоих? –

+0

Ширина только для потока с содержимым. Левая сторона намного меньше ширины, чем правая. – Kirk

+0

, так что вам нужно левую ширину согласно контенту, но оба LL должны заполнить родителя окончательно? –

ответ

1

попробовать этот код .... извините, но я изменил цвет, чтобы таким образом влияние, когда вы будете менять текст первого TextView

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="fill_parent" 
    android:background="#ffffffff" android:weightSum="1"> 

    <LinearLayout android:id="@+id/item_left" 
     android:layout_width="wrap_content" android:layout_height="fill_parent" 
     android:paddingRight="2dp" android:paddingLeft="2dp" 
     android:background="#ff0000ff" android:orientation="vertical" > 
     <TextView android:id="@+id/time" android:layout_width="wrap_content" 
      android:layout_height="wrap_content" android:textColor="#ff555555" 
      android:text="sdfdsf s ada d a asd sad sad" /> 
    </LinearLayout> 

    <LinearLayout android:layout_width="wrap_content" 
     android:layout_height="match_parent" android:orientation="vertical" 
     android:background="#ffff0000" 
     android:layout_weight="1" > 
     <TextView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" android:textColor="#ff555555" 
      android:text="Row1" /> 

     <TextView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" android:textColor="#ff00ff00" 
      android:text="Row2" /> 

     <TextView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" android:textColor="#ff00ff00" 
      android:text="Row3" /> 
    </LinearLayout> 


</LinearLayout> 
+0

Благодарим вас за ответ. Однако 'layout_toRightOf' не существует для дочернего элемента' LinearLayout', а также 'layout_weight' не существует для дочернего элемента' RelativeLayout' – Kirk

+0

yup, но не выглядит «android: layout_toRightOf» требуется, поскольку LinearLayout будет автоматически добавлять что в правой части андроида: ориентация = «горизонтальная» (по умолчанию одна) –

+1

Хорошо, вы правы. Это сработало хорошо. – Kirk

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

    <LinearLayout 
     android:id="@+id/layout1" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:background="#FF0000"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="helloooooooooooooo" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_toRightOf="@id/layout1" 
     android:background="#0000FF" 

> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Row1" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Row2" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Row3" /> 
    </LinearLayout> 
</RelativeLayout> 
+0

Благодарим вас за ответ. Я пробовал это, и он делает одну строку на весь экран, но ничего не отображается. – Kirk

Смежные вопросы