2016-04-19 190 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" />