2016-07-05 2 views
2

Проблема в том, что я хочу два линейных выхода внутри линейной линии. И я хочу, чтобы эти 2 linearlayouts были выровнены по вертикали в соответствии с свойством android: layout_weight. Но похоже, что layout_weight не оказывает никакого эффекта. Вот мой макет
layout_weight совсем не работает

<ScrollView> 
    ..... 
    <LinearLayout> 
    ... 
     <LinearLayout>        //1.Here the Linear Layout         is not getting aligned properly according to the layout_weight 
     ... 
      android:layout_height="0dp" 
      android:layout_weight="3" 
      . 
      . 
      . 
      . 
     </LinearLayout> 

     <LinearLayout>        //2.These two Linear layouts are to be aligned vertically and this second layout is required to use very less space as compared to first layout 
     . . . 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      . 
      . 
      . 
     </LinearLayout> 
    </LinearLayout> 
</ScrollView> 


Вот полный код XML для справки:

<ScrollView 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" 
    tools:context=".MainActivity"> 

    <LinearLayout 
     android:layout_margin="16dp" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

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

      <EditText 
       android:id="@+id/edittext" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="16dp" 
       android:layout_marginTop="30dp" 
       android:ems="5" 
       android:hint="Name" 
       android:inputType="text" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="16dp" 
       android:text="Toppings" 
       android:textAllCaps="true" /> 

      <CheckBox 
       android:id="@+id/whippedcream_checkbox_id" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="16dp" 
       android:paddingLeft="24dp" 
       android:text="Whipped Cream" 
       android:textSize="16sp" /> 

      <CheckBox 
       android:id="@+id/chocolate_checkbox_id" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="16dp" 
       android:paddingLeft="24dp" 
       android:text="Chocolate" 
       android:textSize="16sp" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="16dp" 
       android:text="Quantity" 
       android:textAllCaps="true" /> 

      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal"> 

       <Button 
        android:layout_width="48dp" 
        android:layout_height="48dp" 
        android:onClick="decrement" 
        android:text="-" /> 

       <TextView 
        android:id="@+id/quantity_text_view" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="8dp" 
        android:layout_marginRight="8dp" 
        android:text="2" 
        android:textColor="@android:color/black" 
        android:textSize="16sp" /> 

       <Button 
        android:layout_width="48dp" 
        android:layout_height="48dp" 
        android:onClick="increment" 
        android:text="+" /> 

      </LinearLayout> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:text="order summary" 
       android:textAllCaps="true" /> 


      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:onClick="submitOrder" 
       android:text="Order" /> 

     </LinearLayout> 

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

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

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="Coffee: Rs.5 per cup" /> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="Whipped Cream: Rs.1 per cup additional" /> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="Chocolate: Rs.2 per cup additional" /> 
     </LinearLayout> 
    </LinearLayout> 
</ScrollView> 
+0

дать весу родительскому макету –

+0

Хотите равное пространство для макетов? – Piyush

+0

Попробуйте установить layout_height на «match_parent» –

ответ

2
  1. добавить android:fillViewport="true" в Scrollview
  2. добавить android:weightSum="4" главный LinearLayout

Здесь полный код ниже,

<?xml version="1.0" encoding="utf-8"?> 
    <ScrollView 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:fillViewport="true" 
tools:context=".DemoActivity"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="16dp" 
    android:orientation="vertical" 
    android:weightSum="4"> 

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

     <EditText 
      android:id="@+id/edittext" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="16dp" 
      android:layout_marginTop="30dp" 
      android:ems="5" 
      android:hint="Name" 
      android:inputType="text" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="16dp" 
      android:text="Toppings" 
      android:textAllCaps="true" /> 

     <CheckBox 
      android:id="@+id/whippedcream_checkbox_id" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="16dp" 
      android:paddingLeft="24dp" 
      android:text="Whipped Cream" 
      android:textSize="16sp" /> 

     <CheckBox 
      android:id="@+id/chocolate_checkbox_id" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="16dp" 
      android:paddingLeft="24dp" 
      android:text="Chocolate" 
      android:textSize="16sp" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="16dp" 
      android:text="Quantity" 
      android:textAllCaps="true" /> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 

      <Button 
       android:layout_width="48dp" 
       android:layout_height="48dp" 
       android:onClick="decrement" 
       android:text="-" /> 

      <TextView 
       android:id="@+id/quantity_text_view" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:text="2" 
       android:textColor="@android:color/black" 
       android:textSize="16sp" /> 

      <Button 
       android:layout_width="48dp" 
       android:layout_height="48dp" 
       android:onClick="increment" 
       android:text="+" /> 

     </LinearLayout> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="16dp" 
      android:text="order summary" 
      android:textAllCaps="true" /> 


     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="16dp" 
      android:onClick="submitOrder" 
      android:text="Order" /> 

    </LinearLayout> 

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

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

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Coffee: Rs.5 per cup" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Whipped Cream: Rs.1 per cup additional" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Chocolate: Rs.2 per cup additional" /> 
    </LinearLayout> 
</LinearLayout> 

+0

Получил это, @Vijay, спасибо –

+0

@AakashBansal welcome –

1

Все содержание внутри обоих линейных компоновок имеет их layout_height установлен как wrap_content.

Важно то, что весы работают только после того, как все виды, не имеющие взвешенного layout_height/layout_width, заняли пространство на экране.

Пример:

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

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="abcd1" /> 

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

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


</LinearLayout> 

Здесь abcd2 и abcd3 TextViews будет пространство отведенное первым, а затем abcd1 будет занимать остальное пространство на экране.

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