我尝试将两个RelativeLayouts嵌套为ListView的行,并将嵌套布局的内容垂直居中。无论我尝试什么,我都无法让它发挥作用:
这是我的XML布局,我知道它有点混乱(也试过LinearLayouts没有成功):
<?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="fill_parent"
android:descendantFocusability="blocksDescendants">
<CheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_centerVertical="true"
android:layout_marginTop="2dp"
/>
<TextView
android:id="@+id/label"
android:layout_toRightOf="@id/check"
android:layout_toLeftOf="@+id/date_time_container"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_centerVertical="true"
android:ellipsize="end"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:bufferType="spannable">
</TextView>
<RelativeLayout
android:id="@+id/date_time_container"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_centerVertical="true"
android:background="@color/grey"
>
<TextView
android:id="@+id/date_time"
android:layout_toLeftOf="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:background="@color/green"
android:layout_marginTop="2dp"
android:bufferType="spannable"
android:text="">
</TextView>
<ImageView
android:id="@+id/icon"
android:layout_toRightOf="@id/date_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:layout_marginRight="0dp"
android:layout_marginTop="2dp"
android:layout_centerVertical="true"
android:src="@drawable/urgent"
android:contentDescription="@string/icon"/>
</RelativeLayout>
</RelativeLayout>
我已经确保在适配器中正确地对行进行充气,如其他线程所示:
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return mInflater.inflate(R.layout.task_row, parent, false);
}
有什么想法吗?我敢肯定它一定是次要的。谢谢!
修改 在Eclipse中,布局正确显示,看起来将布局嵌套在ListView行中会以某种方式混淆布局:
编辑2: 我以为我会使用EditText到达某个地方。但除非有办法使它看起来像TextView一样,我回到绘图板:(
编辑3: 我终于通过在TextView中使用LinearLayout和android:gravity =“center_vertical”来解决它:
<?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"
android:descendantFocusability="blocksDescendants">
<CheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginTop="2dp"
/>
<TextView
android:id="@+id/label"
android:layout_toRightOf="@id/check"
android:layout_toLeftOf="@+id/date_time_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:ellipsize="end"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:singleLine="true"
android:text="Some text"
android:textAppearance="?android:attr/textAppearanceLarge"
android:bufferType="spannable">
</TextView>
<LinearLayout
android:id="@+id/date_time_container"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@color/grey"
>
<TextView
android:id="@+id/date_time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:bufferType="spannable"
android:singleLine="true"
android:gravity="center_vertical"
android:background="@color/green"
android:text="20:00"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/urgent"
android:contentDescription="@string/icon"/>
</LinearLayout>
</RelativeLayout>
答案 0 :(得分:0)
尝试将根layout_height
内的RelativeLayout
视图设置为wrap_content
。