使用RelativeLayout子项的LineraLayout中的权重不起作用

时间:2014-11-07 16:09:44

标签: android xml android-layout

我尝试在一个LinearLayout上由3个元素组成的重量加上TextView,以占用最多可用空间。布局的方向是垂直的,我在weight="1"上应用TextView而在其他两个元素上没有重量,以强制它们放在屏幕的底部。但它不起作用,因为“大”TextView根本不占空间而LinearLayout的第二个元素,即Relativelayout占据整个空间。这是布局:

 <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:weightSum="1" >

        <TextView
            android:id="@+id/txt_message"
            android:layout_width="fill_parent"
            android:layout_height="0dp" 
            android:layout_weight="1"
            android:isScrollContainer="true"
            android:maxLines="100000000" >

        </TextView>

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

        <LinearLayout 
            android:id="@+id/answer_panel" 
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

         <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="@color/my_color"/>   

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp"
            android:text="@string/answer_lbl">

        </TextView>

        <TextView
                android:id="@+id/txt_answer"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:isScrollContainer="true"
                android:lines="6"
                android:maxLines="100000000">
        </TextView>

        <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="@color/my_color"/>   

        </LinearLayout>


         <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="5dp"
                android:layout_alignParentBottom="true"
                android:gravity="center">

         <Button android:id="@+id/my_button"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:layout_width="wrap_content"
                android:background="@color/my_button"
                android:textSize="14sp"
                android:textColor="@color/background_color"
                android:text="@string/txt_my_button"/>


     </LinearLayout>

    </RelativeLayout>

    </LinearLayout>

我还尝试将txt_message TextView嵌入Linearlayout,但它不会改变任何内容。如何将元素放在屏幕底部的Relativelayout中,让第一个TextView占据剩余空间?

2 个答案:

答案 0 :(得分:0)

让你顶部线性布局高度android:layout_height =&#34; fill_parent&#34;或(&#34; match_parent&#34;) 现在它是包装内容..并删除相对布局 - 它没有为你做任何工作

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txt_message"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#ffff00"
        android:isScrollContainer="true"
        android:maxLines="100000000" >
    </TextView>



        <LinearLayout
            android:id="@+id/answer_panel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <View
                android:layout_width="fill_parent"
                android:layout_height="1dp"
                android:background="#ff0000" />

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:layout_marginTop="5dp"
                android:text="sddsds" >
            </TextView>

            <TextView
                android:id="@+id/txt_answer"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:isScrollContainer="true"
                android:lines="6"
                android:maxLines="100000000" >
            </TextView>

            <View
                android:layout_width="fill_parent"
                android:layout_height="1dp"
                android:background="#ff0000" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="10dp"
            android:gravity="center"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/my_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#ff0000"
                android:focusable="false"
                android:text="dfgfdgfdg"
                android:textColor="#ff00ff"
                android:textSize="14sp" />
        </LinearLayout>


</LinearLayout>

答案 1 :(得分:0)

如果你想让textview比linearlayout中的其他元素有更多的权重,例如,给textview一个权重5,其余项目的权重为1.玩权重......

其他选项可能是推出LinearLayout,RelativeLayout具有固定高度...如果您的父Viewgroup是RelativeLayout,请将RelativeLayout与android放置:layout_alignParentBottom =&#34; true&#34;属性。如果是LinearLayout,则应该使用第一个选项。

阅读完评论后,您可以使用:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/txt_message"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:isScrollContainer="true"
        android:maxLines="100000000"
        android:above="@+id/relativeLayoutContainer" >

    </TextView>

    <RelativeLayout
        android:id="@+id/relativeLayoutContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >

    <LinearLayout 
        android:id="@+id/answer_panel" 
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

     <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@color/my_color"/>   

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:text="@string/answer_lbl">

    </TextView>

    <TextView
            android:id="@+id/txt_answer"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:isScrollContainer="true"
            android:lines="6"
            android:maxLines="100000000">
    </TextView>

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@color/my_color"/>   

    </LinearLayout>


     <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="5dp"
            android:layout_alignParentBottom="true"
            android:gravity="center">

     <Button android:id="@+id/my_button"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:layout_width="wrap_content"
            android:background="@color/my_button"
            android:textSize="14sp"
            android:textColor="@color/background_color"
            android:text="@string/txt_my_button"/>


 </LinearLayout>

</RelativeLayout>

</RelativeLayout>