2016-04-19 146 views
1

我在CardView布局文件中有复选框代码。 CardView有一个白色背景。通常情况下,我认为未经检查的复选框是黑色方块。我的布局显示没有空白复选框。我所看到的只是白色的CardView背景(屏幕截图中顶部的CardView)。当我点击复选框代码格式化的CardView的最右侧区域时,会出现一个绿色的复选框(屏幕截图中的底部CardView)。我在这里错过了什么? enter image description hereAndroid:为什么复选框不显示空的复选框未选中状态?

布局文件:

<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

安置自己的Java代码 –

+0

确定将立即添加。 – AJW

+0

当您取消选择相同的复选框时会发生什么?它是否像第一个截图一样再次显示? –

回答

1

可能的原因:

  • 你的复选框,可以在白色。

  • 它的知名度可能会消失

另外补充toLeftOf属性为TextView中的,使他们可能无法与checkbox.Check为checkbox.If的颜色,不帮助,您可以重复你的主题把绘制?android:attr/listChoiceIndicatorMultiple为未选中状态

+0

好的,我会尝试。如何检查复选框的颜色是否适合我的主题? – AJW

+0

请参阅http://stackoverflow.com/a/26850668/4321808 –

+0

@RT“textColorSecondary”在我的主题做了诀窍。回答upvoted和接受。干杯。 – AJW

2

绘制对象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

使用下面的代码:

<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" />