我在CardView布局文件中有复选框代码。 CardView具有白色背景。通常情况下,我认为未经检查的Checkbox是一个黑色方块。我的布局显示没有空白复选框。我只看到白色的CardView背景(屏幕截图中的顶部CardView)。当我单击CardView的最右侧区域,其中格式化复选框代码时,会出现绿色复选框(屏幕截图中的底部CardView)。我在这里错过了什么?
布局文件:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/background4main" >
<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="wrap_content"
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="wrap_content"
android:background="?android:selectableItemBackground" >
<TextView
android:id="@+id/cardBlankText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="todo"
android:textStyle="bold"
android:textColor="@android:color/black"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="20sp" />
<TextView
android:id="@+id/cardBlankText3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/cardBlankText2"
android:text="note1"
android:textStyle="bold"
android:textColor="@android:color/black"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="20sp" />
<CheckBox
android:id="@+id/chkSelected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true" />
</RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
Adapter file:
...
public class ListViewHolder extends RecyclerView.ViewHolder {
TextView cardBlankText2;
TextView cardBlankText3;
CheckBox chkSelected;
public ListViewHolder(View itemView) {
super(itemView);
cardBlankText2 = (TextView)itemView.findViewById(R.id.cardBlankText2);
cardBlankText3 = (TextView)itemView.findViewById(R.id.cardBlankText3);
chkSelected = (CheckBox) itemView.findViewById(R.id.chkSelected);
}
...
@Override
public void onBindViewHolder(final ListViewHolder holder, final int position) {
holder.cardBlankText2.setText(dbList.get(position).getTodo());
holder.cardBlankText3.setText(dbList.get(position).getNote1());
holder.chkSelected.setChecked(dbList.get(position).isSelected());
holder.chkSelected.setTag(dbList.get(position));
}
答案 0 :(得分:4)
使用以下代码:
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/settings_notification_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
app:buttonTint="@color/colorPrimary"/>
而不是:
<CheckBox
android:id="@+id/check"
android:button="@drawable/customdrawablecheckbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
答案 1 :(得分:2)
Drawable customcheckbox.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:drawable="@drawable/unchecked_drawable" />
<item android:state_checked="true" android:drawable="@drawable/checked_drawable" />
<item android:drawable="@drawable/unchecked_drawable" /> <!-- default state -->
</selector>
和你的xml文件:
<CheckBox
android:id="@+id/check"
android:button="@drawable/customdrawablecheckbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
答案 2 :(得分:1)
可能的原因:
您的复选框可以是白色。
它的可见性可能已经消失
还为textview添加toLeftOf
属性,以便它们可以不与复选框重叠。检查主题是否为复选框的颜色。如果这没有帮助,则可以将drawable ?android:attr/listChoiceIndicatorMultiple
置于未选中状态