2012-03-30 12 views
0

タブのアイコンを変更する必要があります。私はdrawableフォルダから画像を使用する場合に動作するセレクタを使用しています。内部メモリのタブロードアイコン

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

はしかし、私は、データ/データから画像を使用して...と、そこからイメージをロードするには、次のコードを使用する必要があります。内部メモリからロードする必要がある場合、適切なイメージをロードするためにセレクタを処理する方法(選択または非選択時)ありがとうございます。

ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon); 

File imgFile = new File(pathImage); 

if(imgFile.exists()){ 

    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 

    icon.setImageBitmap(myBitmap); } 

    //icon.setImageResource(R.drawable.tab_search; 
+0

ですから、両方の外部メモリに画像を選択し、un_selectedていますが。右? –

+0

右!両方の画像は、データ/データの上に作成されたフォルダにあります... – Jaume

答えて

1

StateListDrawablesを使用してください。

BitmapDrawableとして、あなたの両方の画像を取得し、このような何か:

StateListDrawable selector = new StateListDrawable(); 
selector.addState(new int[]{ android.R.attr.state_enabled }, yourDefaultBitmapDrawable); 
selector.addState(new int[]{ android.R.attr.state_selected }, yourSelectedBitmapDrawable); 
icon.setImageDrawable(selector); 
+0

私はそれが私の必要なもののように聞こえる!しかし、私にエラーを与えています:selector.addState(new int [] android.R.attr.state_enabled}、myBitmap); "myBitmap"のタイプを "Drawable"に変更することを提案します。 – Jaume

+0

描画可能なd =新しいBitmapDrawable(myBitmap);それを解決!私は本当にあなたの助けに感謝、 – Jaume

+0

ああ、クール、私は答えを更新しました。ハッピーコーディング! –