2016-07-05 62 views
2

問題是我想要在linearlayout中使用兩個線性佈局。我希望這兩個線性佈局可以根據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. ,滾動型
  2. 添加android:fillViewport="true"添加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佔據屏幕上的空間的其餘部分。