layout_weight根本不起作用

时间:2016-07-05 05:36:58

标签: android android-layout android-linearlayout

问题是我想在linearlayout中有两个linearlayout。我希望这两个linearlayout根据android:layout_weight属性垂直对齐。但是看起来layout_weight没有任何效果。这是我的布局

as.data.frame(sapply(df1, function(x) c(class(x), mean(x, na.rm=TRUE), 
                              sum(is.na(x)))), stringsAsFactors=FALSE)


以下是完整的XML代码供参考:

<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>

2 个答案:

答案 0 :(得分:2)

  1. 在scrollview
  2. 中添加android:fillViewport="true"
  3. 添加android:weightSum="4" main linearlayout
  4. 以下是完整的代码,

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

答案 1 :(得分: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将占据屏幕上的其余空间。