2012-02-01 2 views
4

это мой макет (изображение):Android: растянуть расположение между двумя фиксированными LinearLayouts

http://i.imgur.com/j8sqo.jpg


То, что я хочу сделать, это сделать первый LinearLayout 50dip высокий (это уже в порядке) , затем 3-й LinearLayout также высотой 50dip снизу вверх - и затем сделайте второй LinearLayout заполнить место слева между ними. Как мне это сделать?


Это мой XML:

<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="50dip" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" > 

</LinearLayout> 


<LinearLayout 
    android:id="@+id/linearLayout2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/linearLayout1" 
    android:orientation="vertical" > 

    <ViewFlipper 
    android:id="@+id/viewFlipper1" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" > 

     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:src="@drawable/rain1" /> 

     <ImageView 
      android:id="@+id/imageView2" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:src="@drawable/thunder1" /> 

    </ViewFlipper> 

</LinearLayout> 

<LinearLayout 
    android:id="@+id/linearLayout3" 
    android:layout_width="fill_parent" 
    android:layout_height="50dip" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/linearLayout2"> 

</LinearLayout> 

</RelativeLayout> 

ответ

16

Wrap все три раскладки в вертикальной линейной Layout и использовать layout weight "1" на среднем макета:

<LinearLayout 
    . 
    . 
    . 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 
    <LinearLayout 
     . 
     . 
     . 
     android:layout_height="50dip"> 
    <LinearLayout 
     . 
     . 
     . 
     android:layout_height="0dp" 
     android:layout_weight="1"> 
    <LinearLayout 
     . 
     . 
     . 
     android:layout_height="50dip"> 
</LinearLayout> 
+0

Спасибо, это сработало отлично. –

0
LinearLayout layout; 
layout.addView(child, 2); 
+0

Невозможно ли это сделать в XML? –

+0

Вы не можете добавлять дополнительные элементы без кода. – Yahor10

0

попробовать поставить 3-й макет до второй один

<Relativelayout> 
    <Linearlayout1> 
    <Linearlayout3> 
    <linearlayout2> 
</Relativelayout> 
+0

Я пробовал это, но результат тот же. Мне также интересно, почему 3-й макет настолько большой, если высота установлена ​​на 50dip ?! –

1

Преобразовать LinearLayout в относительной макете. определить относительное положение элемента. ваша проблема будет решена.

Или используйте вес в линейной компоновке. определить вес 1.0 для второй линейной layout.and для высоты верхней родительского макета и ширины должны быть fill_parent

+0

Спасибо, я решил это так. –

0

Я не добавил свой в этом вводимый коэффициент кода, но я считаю, что это должно решить проблему:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" > 

</LinearLayout> 


<LinearLayout 
    android:id="@+id/linearLayout2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/linearLayout1" 
    android:layout_above="@+id/linearLayout3" 
    android:orientation="vertical" > 

    <ViewFlipper 
    android:id="@+id/viewFlipper1" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" > 

     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      /> 

     <ImageView 
      android:id="@+id/imageView2" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      /> 

    </ViewFlipper> 

</LinearLayout> 

<LinearLayout 
    android:id="@+id/linearLayout3" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" > 

</LinearLayout> 


</RelativeLayout> 
+0

Спасибо тоже. –

1

Тест:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       > 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="50dip" 
     android:background="#FF00FF"  
     android:id="@+id/first"  
     /> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="50dip" 
     android:background="#0000FF" 
     android:id="@+id/last"  
     android:layout_alignParentBottom="true"   
     />   
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="#FFFFFF" 
     android:layout_above="@id/last" 
     android:layout_below="@id/first"  
     > 
     <ViewFlipper 
      android:id="@+id/viewFlipper1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      >  
       <ImageView 
        android:id="@+id/imageView1" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:src="@drawable/rain1" />   
       <ImageView 
        android:id="@+id/imageView2" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:src="@drawable/thunder1" />  
     </ViewFlipper> 

    </LinearLayout> 
</RelativeLayout> 
+0

Спасибо, я пробовал это раньше, но у меня возникла ошибка с «зависимостью круга». Может быть, я делал что-то другое. В любом случае, спасибо –

+0

Это действительно странно, я не ошибаюсь! – Hiral

+0

Возможно, я сделал что-то еще не так :) Я буду иметь это в виду, но в следующий раз. –

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