我有一个由CardViews填充的RecyclerView列表。我试图在CardView的左侧添加一个Checkbox,但没有任何反应。仅显示两个TextView。我在这里缺少什么?
card_layout.xml:
...
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/singlecard_view1"
android:layout_width="match_parent"
android:layout_height="match_parent"
card_view:cardBackgroundColor="@android:color/white"
card_view:cardCornerRadius="6dp"
android:orientation="horizontal"
android:layout_margin="4dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:selectableItemBackground" >
<CheckBox
android:id="@+id/chkSelected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginStart="5dp"
android:layout_marginLeft="5dp"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/cardBlankText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_toRightOf="@+id/chkSelected"
android:layout_toEndOf="@+id/chkSelected"
android:textStyle="bold"
android:textColor="@android:color/black"
android:textAppearance="?android:attr/textAppearanceLarge"
android:clickable="true"
android:gravity="center_vertical"
android:textAlignment="center" />
<TextView
android:id="@+id/cardBlankText3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_toRightOf="@+id/cardBlankText2"
android:layout_toEndOf="@+id/cardBlankText2"
android:textStyle="bold"
android:textColor="@android:color/black"
android:textAppearance="?android:attr/textAppearanceLarge"
android:clickable="true"
android:gravity="center_vertical"
android:textAlignment="center" />
</RelativeLayout>
</android.support.v7.widget.CardView>
...
DataModel.java:
public class DataModel {
private String todo;
private String note1;
private boolean isSelected;
public String getTodo() {
return todo;
}
public void setTodo(String todo) {
this.todo = todo;
}
public String getNote1() {
return note1;
}
public void setNote1(String note1) {
this.note1 = note1;
}
public boolean isSelected() {
return isSelected;
}
public void setSelected(boolean isSelected) {
this.isSelected = isSelected;
}
}
Adapter.java:
...
public class ListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
CheckBox chkSelected;
TextView cardBlankText2;
TextView cardBlankText3;
public ListViewHolder(View itemView) {
super(itemView);
chkSelected = (CheckBox) itemView.findViewById(R.id.chkSelected);
cardBlankText2 = (TextView)itemView.findViewById(R.id.cardBlankText2);
cardBlankText3 = (TextView)itemView.findViewById(R.id.cardBlankText3);
@Override
public void onBindViewHolder(ListViewHolder holder, int position) {
holder.chkSelected.setChecked(dbList.get(position).isSelected());
holder.chkSelected.setTag(dbList.get(position));
holder.cardBlankText2.setText(dbList.get(position).getTodo());
holder.cardBlankText3.setText(dbList.get(position).getNote1());
}
...
}
答案 0 :(得分:0)
可能是第三个textview的匹配父宽度
的问题<TextView
android:id="@+id/cardBlankText3"
android:layout_width="match_parent"
这是一个常见的错误&#34; match_parent&#34;不能填补剩余的空间,但却占据了整个视野。 (并且,是的,在预览中,它完全没有问题)
如果您想让第三个textview填满复选框和第二个textview之后的剩余空间。你可以试试
<TextView
android:id="@+id/cardBlankText3"
android:layout_width="0dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
为避免textview 2太长而且没有为textview 3留出空间,你也应该设置一个最大宽度。这样的事情。
<TextView
android:id="@+id/cardBlankText2"
android:maxWidth="160dp"
只需要一个你喜欢的神奇数字。
如果你想让textview 2和textview 3均匀地划分空间。您可以使用LinearLayout,weight_sum和weight。