2016-07-15 3 views
6

Ich entwickle benutzerdefinierte Kontrollkästchen und Optionsfeld, aber Stil gilt nicht für beide in Pre-Lollipop-Geräten (Zeige schwarze Farbe statt). Ich habe wie folgt codiert:Stil ist nicht in benutzerdefinierten Kontrollkästchen und Radiobutton

XML:

<com.kaho.myapp.CustomCheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="CheckBoxText" 
    android:textColor="@color/colorPrimary" 
    android:theme="@style/SampleTheme"/> 

Individuelle Checkbox:

public class CustomCheckBox extends CheckBox { 
    public CustomCheckBox(Context context) { 
     super(context); 
    } 

    public CustomCheckBox(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     setFont(context, attrs) ; 
    } 

    public CustomCheckBox(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     setFont(context,attrs) ; 
    } 

    public CustomCheckBox(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 
     super(context, attrs, defStyleAttr, defStyleRes); 
     setFont(context, attrs) ; 
    } 

    private void setFont(Context context, AttributeSet attrs) { 
     if (attrs != null) { 
      /* Set the font */ 
     } 
    } 
} 

Schriftart in richtig einstellen. Stil:

<style name="SampleTheme" parent="Theme.AppCompat.Light"> 
    <item name="colorAccent">#08c283</item> 
    <item name="android:textColorSecondary">#969696</item> 
</style> 

Antwort

3

Sie haben dieses Problem, da Pre-Lollipop-Geräte haben nicht die Möglichkeit, standardmäßig colorAccent einzustellen. Um ein solches Verhalten zu erhalten, erweitern Sie Ihre Ansicht von der entsprechenden Unterstützungsansicht. Es würde etwas wie dieses sein:

public class CustomCheckBox extends AppCompatCheckBox 
public class CustomRadioButton extends AppCompatRadioButton 

Auf diese Weise haben Ihre Ansichten das Material Design-Stil auf Pre Lollipop Geräte.

+0

Dank seiner Arbeit ... – Nikesh

0

Werfen Sie einen Blick auf die individuelle CheckBox es funktioniert großartig für alle Version Pre/Post-Lutscher.

CustomCheckBox.java:

public class CustomCheckBox extends CheckedTextView { 
    private Drawable btnDrawable; 

    public CustomCheckBox(Context context) { 
     this(context, null); 
    } 

    public CustomCheckBox(Context context, AttributeSet attrs) { 
     this(context, attrs, 0); 
    } 

    public CustomCheckBox(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     colorAccordingToTheme(); 
    } 

    @Override 
    public void setCheckMarkDrawable(Drawable d) { 
     super.setCheckMarkDrawable(d); 
     btnDrawable = d; 
    } 

    @Override 
    public void toggle() { 
     super.toggle(); 
     colorAccordingToTheme(); 
    } 

    @Override 
    public void setChecked(boolean checked) { 
     super.setChecked(checked); 
     colorAccordingToTheme(); 
    } 

    private void colorAccordingToTheme() { 
     if (btnDrawable != null) { 
      btnDrawable.setColorFilter(yourColor, PorterDuff.Mode.SRC_IN); 
     } 
    } 
} 

im XML-Layout:

<?xml version="1.0" encoding="utf-8"?> 
<com.yourpaackcge.CustomCheckBox xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/cb" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:checkMark="@drawable/selector_check_box" 
    android:gravity="center|left" 
    android:paddingRight="24dp" 
    android:paddingLeft="24dp" 
    android:background="@drawable/ripple"/> 

Meine Wähler:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/ic_check_box_on" android:state_pressed="true"/> 

    <item android:drawable="@drawable/ic_check_box_on" android:state_checked="true"/> 

    <item android:drawable="@drawable/ic_check_box_off"/> 
</selector> 
Verwandte Themen