2012-02-17 7 views
2

私は選択時に別のドロウアブルを表示する必要がある描画可能な状態リストセレクタを持っています。checkableを拡張したビューではstate_checkableが機能しません

drawableを使用するViewクラスをインターフェイスCheckableで拡張しましたが、これは問題ありません。

ただし、私はstate_checkableをフィルタリングするだけで、値falseのイメージを表示します。これは私の実装に何か問題があることを意味していると思います。あなたはstate_checkablestate_checkedが正しく動作するために取得するにはどうすればよい

<item android:drawable="@drawable/button_6_default" android:state_checkable="false" /> 
<item android:drawable="@drawable/button_disable_default" android:state_checkable="true" /> 

答えて

1

私はそれを理解しました。 onCreateDrawableStateを実装し、追加した余分な属性の数が増えたsuperを呼び出した後にビューがチェックされている場合は、state_checked attrを追加する必要があります。もうコードはもうありません。申し訳ありません。

+0

コードを投稿できますか?私はこの解決策について聞いたことがありますが、どのように見えるでしょうか? –

+0

申し訳ありません、コードをもう見つけられません。かなりシンプルでなければなりません。そのstate_checkedを 'onCreateDrawableState'の状態に追加し、カウンタをインクリメントしてください。 – Peterdk

2

onCreateDrawableStateメソッドの実際のコードを必要とする可能性のある他の人の前の答えを拡張します。これはこのライブラリから抽出されます:https://github.com/ManuelPeinado/MultiChoiceAdapter

private static final int[] CHECKED_STATE_SET = { 
    android.R.attr.state_checked 
}; 

@Override 
protected int[] onCreateDrawableState(int extraSpace) { 
    final int[] drawableState = super.onCreateDrawableState(extraSpace + 2); 
    if (isChecked) { 
     mergeDrawableStates(drawableState, CHECKED_STATE_SET); 
    } 
    return drawableState; 
} 
+1

「2」の代わりに「余分なスペース+ 1」が必要だと思います。あなたは1つの州のattrを追加しています。 – Peterdk

関連する問題