2016-07-15 13 views
6

カスタムのチェックボックスとラジオボタンを作成していますが、スタイルはロールプレップデバイスの前には適用されません(代わりに黒色で表示)。私はこのようなコード化されています:カスタムチェックボックスとラジオボタンにスタイルが適用されていません

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

カスタムチェックボックス:適切に設定する際に

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 */ 
     } 
    } 
} 

フォント。 スタイル:

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

答えて

3

前ロリポップデバイスが持っていないため、この問題を持っていますデフォルトでcolorAccentを設定する可能性があります。このような動作を取得するには、対応するサポートビューからビューを拡張します。

このようにして、あなたのビューには、LollipopのプレLOLIPOPデバイスのマテリアルデザインスタイルが適用されます。

+0

ありがとうございます... – Nikesh

0

は、それがすべてのバージョンのプリ/ポストロリポップのための素晴らしい作品のカスタムのCheckBoxを見てみましょう。

CustomCheckBox.java:XMLレイアウトで

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); 
     } 
    } 
} 

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

マイセレクター:

<?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> 
関連する問題