我创建了一个ListItem,在我的基于REST的应用程序中使用它来填充ListView。 Android工作室中的预览看起来正确,但应用程序本身显示奇怪。我在下面提供的布局中使用了match_parent以及textViews的wrap_content。
基本上我的目标是与GMail接口类似的布局。
另外,lbl_date和lbl_mileage需要优先考虑,不应该被截断或隐藏。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="4dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal">
<TextView
android:id="@+id/lbl_title"
android:layout_weight=".9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="4dp"
android:layout_marginStart="10dp"
android:text="Title"
android:textSize="16sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/lbl_date"
android:layout_weight=".1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:gravity="right"
android:text="Date"
android:textStyle="bold"
android:textSize="12sp"
android:textColor="@color/blue_dark"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/lbl_details"
android:layout_weight=".9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="4dp"
android:layout_marginStart="10dp"
android:text="Details"
android:scrollHorizontally="true"
android:ellipsize="end"
android:maxLines="2"
android:textColor="@color/grey"/>
<TextView
android:id="@+id/lbl_mileage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:gravity="right"
android:text="0.0"
android:textColor="@color/blue_dark"/>
</LinearLayout>
</LinearLayout>
在Android Studio中预览
在仿真器/设备中查看
答案 0 :(得分:3)
当您使用 LinearLayout 和属性 layout_weight 时,如果方向 水平,则 layout_width 应设置为0dp,如果方向 垂直, layout_height 应设置为0dp。
尝试改变
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal">
<TextView
android:id="@+id/lbl_title"
android:layout_weight=".9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="4dp"
android:layout_marginStart="10dp"
android:text="Title"
android:textSize="16sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/lbl_date"
android:layout_weight=".1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:maxLines="1"
android:gravity="right"
android:text="Date"
android:textStyle="bold"
android:textSize="12sp"
android:textColor="@color/blue_dark"/>
</LinearLayout>
我希望它能奏效。
答案 1 :(得分:0)
下面的代码会将您的dateText保留在RightSide上。
使用width = wrapContent和weight = 0(默认值),以保证您不会被权重函数截断或拉伸。
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal">
<TextView
android:id="@+id/lbl_title"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="4dp"
android:layout_marginStart="10dp"
android:text="Title"
android:textSize="16sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/lbl_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="Date"
android:textStyle="bold"
android:textSize="12sp"
android:textColor="@color/blue_dark"/>
</LinearLayout>