Android LinearLayout在xml中查看项目不会填充空白空间
我是android新手,我有一个线性布局列表项,并希望TextView itemName填充行上剩余的空白区域,而其他两个视图(itemIcon和itemTimestamp)只占用尽可能多的空间,因此需要使用wrap_content 。 我已经尝试了ItemName android:layout_width上的fill_parent和match_parent,但它最终隐藏了itemTimestamp视图。 我已经尝试了RelativeLayout,但没有运气,如果可能的话,宁愿坚持使用Linearlayout。 感谢你的帮助。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/itemNotificationBuzz"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffff0000"
>
<LinearLayout
android:id="@+id/notificationHeader"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="#ffff0000"
>
<ImageView
android:id="@+id/notificationIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:maxHeight="35dp"
android:maxWidth="35dp"
android:background="#FF000000"
android:padding="1dp"
android:src="@drawable/ic_action_place" />
<TextView
android:id="@+id/notificationName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp"
android:textSize="18sp"
android:textColor="@android:color/white"
android:background="#A4C739"
android:typeface="sans"
android:textStyle="bold"
android:maxLines="1"
android:text="Fname Lname"
/>
<TextView
android:id="@+id/notificationTimestamp"
android:layout_width = "wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:background="#FF000000"
android:ems="10"
android:maxLines="1"
android:text="2m"
android:textColor="@android:color/white"
android:typeface="sans" />
</LinearLayout>
</RelativeLayout>
如果你想使用LinearLayout,你可以通过在你的LinearLayout中使用weightSum
属性来实现你想要的weightSum
,而在你的项目Name TextView中使用layout_weight
。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/notificationHeader"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffff0000"
android:orientation="horizontal"
android:weightSum="1">
<ImageView
android:id="@+id/notificationIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF000000"
android:gravity="left"
android:maxHeight="35dp"
android:maxWidth="35dp"
android:padding="1dp"
android:src="@drawable/ic_launcher"/>
<TextView
android:id="@+id/notificationName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="#A4C739"
android:gravity="center"
android:maxLines="1"
android:padding="5dp"
android:text="Fname Lname"
android:textColor="@android:color/white"
android:textSize="18sp"
android:textStyle="bold"
android:typeface="sans"
android:layout_weight="1"/>
<TextView
android:id="@+id/notificationTimestamp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF000000"
android:gravity="right"
android:maxLines="1"
android:text="2m"
android:textColor="@android:color/white"
android:typeface="sans"/>
</LinearLayout>
这将使您的物品名称填充所有空间,直到到达最后一个元素。 注意 :当您使用layout_weight时,您必须将layout_width设置为0dp。 还应该从最后一个元素中删除ems = 10,因为它使notificationTimestamp元素具有更大的宽度,并且会将Name元素向左推,留下空白区域。
你可以直接使用RelativeLayout来实现你想要的。 答案已经在这里如何使视图布局填充剩余的空间?
如果你仍想使用LinearLayout,那么这也是可能的。 在这种情况下,为了实现你想要的,把你想要包装内容的小部件的layout_weight属性设置为0(你仍然应该将它们设置为wrap_content),然后设置你想要占用剩下的小部件的layout_weight空间为1。
这里没有理由使用RelativeLayout。 你需要使用的是布局权重。 您需要将layout_width设置为0dp,并将layout-weight设置为1
这里是更新的布局(顺便说一下,我删除了它的父亲RelativeLayout,因为它没有任何用处):
<ImageView
android:id="@+id/notificationIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:maxHeight="35dp"
android:maxWidth="35dp"
android:background="#FF000000"
android:padding="1dp"
android:src="@drawable/ic_action_place" />
<TextView
android:id="@+id/notificationName"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp"
android:textSize="18sp"
android:textColor="@android:color/white"
android:background="#A4C739"
android:typeface="sans"
android:textStyle="bold"
android:maxLines="1"
android:text="Fname Lname"
/>
<TextView
android:id="@+id/notificationTimestamp"
android:layout_width = "wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:background="#FF000000"
android:ems="10"
android:maxLines="1"
android:text="2m"
android:textColor="@android:color/white"
android:typeface="sans" />
链接地址: http://www.djcxy.com/p/16655.html
上一篇: Android LinearLayout View item in xml does not fill empty space