2012-09-12 4 views
7

私は既存のStatelist Drawableに無効状態を追加しようとしています。Statelist drawable android:state_enabledがxmlで動作しません

もともと、私はこのコードを持っていた:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/store_item_background_selected" android:state_selected="true"/> 
<item android:drawable="@drawable/store_item_background"/> 
</selector> 

をして選択し、選択されていないため、それは完全に働きました。このような=「false」をstate_enabled:

は、今私はアンドロイド追加したい

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/store_item_background_selected" android:state_selected="true"/> 
<item android:drawable="@drawable/store_item_background" android:state_enabled="true"/> 
<item android:drawable="@drawable/store_item_background_disabled"/> 
</selector> 

をし、それが無効になった画像に切り替わることはありません。

EDIT

私はこのstatelist drwableの設定だし、今私は無効になった画像を参照してくださいビューのコンストラクタにsetEnabled(false)を追加しましたが、私は有効にビューを設定したら、それは再び無効に切り替わりません。 。

答えて

7

これは本当に古い質問ですが、この

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

<item android:drawable="@drawable/store_item_background_selected" android:state_enabled="true" android:state_selected="true"/> 
<item android:drawable="@drawable/store_item_background" android:state_enabled="true"/> 
<item android:drawable="@drawable/store_item_background_disabled" android:state_enabled="false"/> 

</selector> 
+0

は違いはありませんでした。編集 – piojo

+0

をご覧ください。申し訳ありませんが、私が無効にしたコードでエラーが発生しました。 – piojo

+0

悪い回答。 NORの仕事を説明しなかった。 – Vucko

15

を試してみてください。 オンに応じてセレクタを書き込む必要があります。

  1. 無効状態の最初の
  2. 押された状態秒
  3. 通常の状態は、最後の

+0

注文を即座に切り替えて私の問題を直ちに解決しました。この情報はどこで見つかりましたか? –

+0

私はこの同じ問題で何時間も立ち往生したときにGoogleでどこにいたのですか –

+0

私はこの方法を使ってこの問題を長年抱えていました: StateListDrawable res = new StateListDrawable();res.addState(新しいint [] { - android.R.attr.state_enabled}、新しいColorDrawable(カラー)); res.addState(new int [] {android.R.attr.state_enabled、android.R.attr.state_pressed}、new ColorDrawable(color));res.addState(新しいint [] {}、新しいColorDrawable(カラー)); これはすぐに機能しました。ありがとう。それはどこかで文書化されてほしい... – ClayHerendeen

関連する問題