将屏幕划分为两个相等的部分,无法设置layout_weight

时间:2014-11-18 08:44:38

标签: android android-layout android-linearlayout

我想问题很愚蠢,但我在这里遗漏了一些东西并且想要理解。

我将屏幕划分为两个相等的部分。我知道这可以通过设定重量来完成。但我不知道为什么我不能在线性布局中设置重量。相反,我设置了weightSum,但是我对weightSum的理解是,在设置宽度和高度之后,我猜它是屏幕上的空间。

这就是我正在做的事情

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="#ffffff"
android:layout_height="match_parent"
android:id="@+id/main_panel">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/top"
android:weightSum="100">
   <ListView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/list"
    android:divider="@null"
    android:dividerHeight="0dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/top"
    android:weightSum="50"
    android:layout_alignParentBottom="true"
    android:id="@+id/ bottom">
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/data"
    android:orientation="vertical"
    android:background="#D3D3D3"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <View
        android:id="@+id/drag_line"
        android:layout_width="50dp"
        android:visibility="visible"
        android:background="@drawable/bar"
        android:layout_gravity="center_horizontal|top"
        android:layout_height="170dp"
        android:src="@drawable/line" />

</FrameLayout>
</LinearLayout>
</RelativeLayout>

PS:我无法使用android lollipop

设置layout_weight属性

5 个答案:

答案 0 :(得分:0)

尝试使用以下代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="#ffffff"
android:layout_height="match_parent"
android:id="@+id/main_panel">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:id="@+id/top"
>
   <ListView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/list"
    android:divider="@null"
    android:dividerHeight="0dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_below="@id/top"
    android:layout_weight="1"
    android:layout_alignParentBottom="true"
    android:id="@+id/ bottom">
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/data"
    android:orientation="vertical"
    android:background="#D3D3D3"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <View
        android:id="@+id/drag_line"
        android:layout_width="50dp"
        android:visibility="visible"
        android:background="@drawable/bar"
        android:layout_gravity="center_horizontal|top"
        android:layout_height="170dp"
        android:src="@drawable/line" />

</FrameLayout>
</LinearLayout>
</RelativeLayout>

答案 1 :(得分:0)

 <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
   
     <Button
        android:id="@+id/color_in_palette"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#CCFFFF"
        android:text="Button"
        android:layout_weight="50"
        android:textSize="0sp" />

   <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="50">  
    
     <TextView
         android:id="@+id/color_id"
         android:layout_width="match_parent"
         android:layout_height="50dp"
         android:text="(204,255,255)"
         android:gravity="center"
         android:textAppearance="?android:attr/textAppearanceLarge" />
          
    <GridView
        android:id="@+id/gridView1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:numColumns="13"
        android:layout_weight="48" >
    </GridView>

    </LinearLayout>
  

  </LinearLayout>

在此按钮中占据屏幕的一半,另一半占用另一个线性布局,其中包含TextView&amp; GridView的

答案 2 :(得分:0)

<强>问题:

你不能在相对布局中添加一个weightSum,它只能绑定到线性布局参数本身。

<强>溶液

在您的relatie布局中添加另一个linearlayout作为内部线性布局的父级。

<强>样品:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="#ffffff"
android:layout_height="match_parent"
android:id="@+id/main_panel">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/parent"
android:weightSum="1">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/top"
android:weightSum="0.5">
   <ListView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/list"
    android:divider="@null"
    android:dividerHeight="0dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/top"
    android:weightSum="0.5"
    android:layout_alignParentBottom="true"
    android:id="@+id/ bottom">
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/data"
    android:orientation="vertical"
    android:background="#D3D3D3"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <View
        android:id="@+id/drag_line"
        android:layout_width="50dp"
        android:visibility="visible"
        android:background="@drawable/bar"
        android:layout_gravity="center_horizontal|top"
        android:layout_height="170dp"
        android:src="@drawable/line" />

</FrameLayout>
</LinearLayout>

</LinearLayout>
</RelativeLayout>

答案 3 :(得分:0)

Weightsum是父母用来查找子女总重量和的属性。此属性仅适用于LinearLayout。它的孩子应该指定其宽度或高度为0dp的重量。您可以找到教程here。所以你的layout.xml将是

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_panel"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    android:orientation="vertical"
    android:weightSum="100" >

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="0dp"

        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:layout_weight="50"
        android:divider="@null"
        android:dividerHeight="0dp" />

    <FrameLayout
        android:id="@+id/data"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="50"
        android:background="#D3D3D3"
        android:orientation="vertical" >

        <View
            android:id="@+id/drag_line"
            android:layout_width="50dp"
            android:layout_height="170dp"
            android:layout_gravity="center_horizontal|top"
            android:visibility="visible" />
    </FrameLayout>

</LinearLayout>

答案 4 :(得分:0)

Get Root attribute always be <Relative> and with in that write your remaining XML code.

e.g.

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



    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@color/black">

    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@color/white">

    </LinearLayout>


</LinearLayout>

//Replace above XML code by...

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



                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:background="@color/black">

                </LinearLayout>


                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:background="@color/white">

                </LinearLayout>


            </LinearLayout>
</RelativeLayout>