2011-01-11 14 views
2

CheckBoxクラスはCompoundButtonを拡張しますが、何も追加しません。しかし、それはそれぞれの外観を得る方法。 Androidのソースでいくつかの宣言が見つかりましたが、CheckBoxクラスにどのようにマッピングされているのだろうか?CheckBoxはどのようにそれぞれのドロウアブルを取得しますか?

public class CheckBox extends CompoundButton { 
    public CheckBox(Context context) { 
     this(context, null); 
    } 

    public CheckBox(Context context, AttributeSet attrs) { 
     this(context, attrs, com.android.internal.R.attr.checkboxStyle); 
    } 

    public CheckBox(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 
} 

スタイル

<style name="Theme"> 
    <item name="checkboxStyle">@android:style/Widget.CompoundButton.CheckBox</item> 
</style> 

<style name="Widget.CompoundButton.CheckBox"> 
    <item name="android:background">@android:drawable/btn_check_label_background</item> 
    <item name="android:button">@android:drawable/btn_check</item> 
</style> 

EDIT:

は、おそらく私が描画可能にWidget.CompoundButton.CheckBoxスタイルに割り当てられているかを理解...明確ではありませんでしたが、どのようにこのスタイルが割り当てられていますCheckBoxクラスに?私はスタイル名に ".CheckBox"が表示されますが、この命名規則は本当にトリックを作りますか?もしそうなら、ルールは何ですか?私がCompoundButtonからMyCheckBoxを派生させたら、Widget.CompoundButton.MyCheckBoxスタイルを定義すればいいのですか?

答えて

4

あなたの答えがあります:描画可能に(要素がフォーカスされているかどうかを、押された、など)複数の状態を持つことができます<item name="android:button">@android:drawable/btn_check</item>

、それはの場所を異なる状態ですチェックボックスがあります。

編集:質問を修正した後、私はあなたが何か違うものを探しているのを見ています。繰り返しますが、投稿した内容のすべてです:

<style name="Widget.CompoundButton.CheckBox"> 

これはスタイルです。

<item name="checkboxStyle">@android:style/Widget.CompoundButton.CheckBox</item> 

メインテーマ(android.internal.R.attr)には、このスタイルを指す属性「checkboxStyle」があります。

public CheckBox(Context context, AttributeSet attrs) { 
    this(context, attrs, com.android.internal.R.attr.checkboxStyle); 
} 

コンストラクタはその属性をビューに割り当てます。以上です。

+0

ああ..確かに、私はcheckboxStyleを見落としました。 TY! – alex2k8

1

はここ

<item name="android:button">@android:drawable/btn_check</item> 
+0

私は明確ではなかったので、質問を編集しました。 – alex2k8