如果未定义layoutweight属性,则视图将消失

时间:2015-01-13 07:58:14

标签: android android-layout

我有布局(列表项):

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="74dp"
    android:background="@drawable/button_background">

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/list_separator"
        android:id="@+id/event_separator"
        android:layout_marginLeft="14dp"
        android:layout_marginRight="14dp" />

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="73dp"
        android:gravity="center_vertical">

        <RelativeLayout
            android:layout_width="65dp"
            android:layout_height="match_parent">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/icon"
                android:layout_centerVertical="true"
                android:layout_centerHorizontal="true" />

        </RelativeLayout>

        <TextView
            android:id="@+id/event"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:maxLines="2"
            android:text="Text text text"
            android:textColor="@color/text"
            android:textSize="14sp" />

        <TextView
            android:id="@+id/event_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:maxLines="2"
            android:text="2014.05.13\n16.20:33"
            android:textColor="@color/text_faded"
            android:textSize="10sp"
            android:gravity="center|right"
            android:layout_marginRight="14dp"
            android:layout_marginEnd="14dp"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/event_delete"
            android:src="@drawable/ic_delete" />


    </LinearLayout>

</LinearLayout>
  1. 第一个View只是列表分隔符
  2. 然后有ImageView图标
  3. text TextView(id.event)
  4. 时间戳TextView(id.event_time)
  5. 另一个图标&#39; ImageView&#39; (id.event_delete)
  6. 它不起作用,我希望得到

    [       1      ]
    [2][  3  ][4][5]
    

    但是我得到了

    [       1      ]
    [2][     3     ]
    

    4和5不可见(不适合屏幕)。

    当我添加layout_weight="1"时,它有点有效,但我不知道原因:

    <TextView
        android:id="@+id/event"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:maxLines="2"
        android:text="Text text text"
        android:textColor="@color/text"
        android:textSize="14sp"
        android:layout_weight="1" />
    

2 个答案:

答案 0 :(得分:2)

替换此

android:layout_width="match_parent" 

通过

android:layout_width="wrap_content"

textview @+id/event

您将textview宽度指定为match_parent,因此它将占据所有宽度,因此4和5不可见

修改

<?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="74dp"
    android:background="#ffffff"
    android:orientation="vertical" >

    <View
        android:id="@+id/event_separator"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginLeft="14dp"
        android:layout_marginRight="14dp"
        android:background="#000000" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="73dp"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:weightSum="5" >

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:src="@drawable/ic_launcher" />
        </RelativeLayout>

        <TextView
            android:id="@+id/event"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:ellipsize="marquee"
            android:maxLines="2"
            android:text="Text text text"
            android:textColor="#000000"
            android:textSize="14sp" />

        <TextView
            android:id="@+id/event_time"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginEnd="14dp"
            android:layout_marginRight="14dp"
            android:layout_weight="1"
            android:gravity="center|right"
            android:maxLines="2"
            android:text="2014.05.13\n16.20:33"
            android:textColor="#000000"
            android:textSize="10sp" />

        <ImageView
            android:id="@+id/event_delete"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/ic_launcher" />
    </LinearLayout>

</LinearLayout>

答案 1 :(得分:1)

如果您希望它与您指定的一样,则首选android:layout_weight给第二个LinearLayout中的所有观看次数,并按照here设置android:layout_width="0dp"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="73dp"
    android:gravity="center_vertical">

    <RelativeLayout
        android:layout_width="65dp"
        android:layout_height="match_parent">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/icon"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true" />

    </RelativeLayout>

    <TextView
        android:id="@+id/event"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:maxLines="2"
        android:text="Text text text"
        android:textColor="@color/text"
        android:textSize="14sp" />

    <TextView
        android:id="@+id/event_time"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:maxLines="2"
        android:text="2014.05.13\n16.20:33"
        android:textColor="@color/text_faded"
        android:textSize="10sp"
        android:gravity="center|right"
        android:layout_marginRight="14dp"
        android:layout_marginEnd="14dp"/>

    <ImageView
        android:scaleType="fitCenter"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:id="@+id/event_delete"
        android:src="@drawable/ic_delete" />


</LinearLayout>