为什么复选框小部件不会出现在RecyclerView的CardView上?
问题描述:
我有一个由CardViews填充的RecyclerView列表。我试图在CardView的左侧添加一个复选框,但没有任何反应。只有两个TextView出现。我在这里错过了什么?为什么复选框小部件不会出现在RecyclerView的CardView上?
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());
}
...
}
答
大概第三吨的问题extview比赛母公司宽度
<TextView
android:id="@+id/cardBlankText3"
android:layout_width="match_parent"
这是一个常见的错误是“match_parent”不能只是填补空间的其余部分,但占据整个视图。 (并且,是的,在预览中,这完全没有问题)
如果你想让第三个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。
它不显示复选框? – dungtv
正确,但不显示复选框。 – AJW
它不显示在设计屏幕上或运行? 我尝试,它有复选框。 我复制你的代码 设计屏幕:http://i.imgur.com/bwxV9wW.png 和运行:http://i.imgur.com/Ni09PYB.png – dungtv