2016-05-17 19 views
6

Wie kann ich die Checkboxfarbe von CheckBoxPreference ändern? Ich spezifiziere Thema Attribut funktioniert nicht. Ich habe das Thema auch im Manifest festgelegt, aber es wird nicht mit Akzentfarbe sondern mit Standardfarbe angezeigt.Android. CheckBoxPreference color

enter image description here

Manifest:

<activity android:name=".ui.activities.AppPreferencesActivity" 
android:theme="@style/PreferencesTheme"/> 

Stil:

<style name="PreferencesTheme"> 
    <item name="colorAccent">#FF4081</item> 
</style> 

Bin ich etwas fehlt? Danke im Voraus.

Antwort

0

Verwenden von ColorPrimary anstelle von colorAccent.

<item name="android:colorPrimary">#FF4081</item> 
3

Ich löste es

<item name="android:colorAccent" tools:targetApi="21">@color/arrows</item> 
    <item name="colorAccent">@color/arrows</item> 

Und mit einem benutzerdefinierten XML-Code für das Kontrollkästchen in der PreferenceActivity Layout-Datei (settings.xml in meinem Fall) die gewünschten Farben in meinem styles.xml zuweisen.

settings.xml

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <CheckBoxPreference 
     android:defaultValue="false" 
     android:key="prefSendReport" 
     android:summary="@string/desc_daily_not" 
     android:title="@string/title_daily_not" 
     android:layout="@layout/checkbox_preference" 
     android:widgetLayout="@layout/custom_checkbox" 
     > 
    </CheckBoxPreference> 

    <Preference 
     android:key="prefSyncFrequency" 
     android:summary="@string/pref_sync_frequency_summary" 
     android:title="@string/pref_sync_frequency" 
     android:layout="@layout/checkbox_preference" 
     /> 

checkbox_preference.xml

<?xml version="1.0" encoding="utf-8"?> 
<!-- Layout for a Preference in a PreferenceActivity. The Preference is able 
to place a specific widget for its particular type in the "widget_frame" 
layout. --> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="wrap_content" 
android:minHeight="?android:attr/listPreferredItemHeight" 
android:gravity="center_vertical" android:paddingRight="?android:attr/scrollbarSize" 
> 

    <RelativeLayout android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="15dip" 
     android:layout_marginRight="6dip" 
     android:layout_marginTop="6dip" 
     android:layout_marginBottom="6dip" 
     android:layout_weight="1" 
    > 

     <TextView android:id="@+android:id/title" 
      android:layout_width="wrap_content"  
      android:layout_height="wrap_content" 
      android:singleLine="true" 
      android:textAppearance="? 
      android:attr/textAppearanceMedium" 
      android:ellipsize="marquee" 
      android:fadingEdge="horizontal" 
      android:textColor="@color/arrows" 
     /> 

     <TextView android:id="@+android:id/summary" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@android:id/title" 
      android:layout_alignLeft="@android:id/title" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:maxLines="4" 
      android:textColor="@color/mdtp_light_gray" 
     /> 

    </RelativeLayout> 

    <!-- Preference should place its actual preference widget here. --> 
    <LinearLayout android:id="@+android:id/widget_frame" 
    android:layout_width="wrap_content" android:layout_height="match_parent" 
    android:gravity="center_vertical" android:orientation="vertical" 
    /> 

</LinearLayout> 

custom_checkbox.xml

<?xml version="1.0" encoding="UTF-8"?> 
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+android:id/checkbox" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    android:clickable="false" 
/> 
5

Thema Ihrer Einstellung Aktivität erstellen, fügen Sie diese Parameter der Stil:

<style name="AppTheme.NoActionBar.SettingActivity" parent="AppTheme.NoActionBar"> <!--when the check box is checked --!>
<item name="colorControlNormal">@color/your-color</item> <!--when the check box is unchecked --!>
<item name="colorControlActivated">@color/your-color</item> </style>