2012-03-30 7 views
0

Ich muss Tab-Symbol ändern, wenn ausgewählt oder nicht. Ich verwende folgenden Selektor, der funktioniert, wenn ich Bilder aus einem zeichnbaren Ordner verwende.android laden Registerkarte Symbol aus dem internen Speicher

Allerdings muss ich Bilder aus Daten/Daten verwenden ... und folgenden Code verwenden, um das Bild von dort zu laden. Wie gehe ich mit Selektor um, um das richtige Bild zu laden (wenn ausgewählt oder nicht), wenn ich es aus dem internen Speicher laden muss? Danke

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

So haben Sie beide ausgewählt und un_selected Bild in Ihrem externen Speicher. Recht? –

+0

richtig! Beide Bilder sind auf Ordner auf Daten/Daten erstellt ... – Jaume

Antwort

1

Verwenden Sie StateListDrawables.

Erhalten Sie Ihr beide Bilder als BitmapDrawable und etwas tun, wie folgt aus:

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

mm klingt wie das ist, was ich brauche! gibt mir jedoch einen Fehler an: selector.addState (new int [] {android.R.attr.state_enabled}, myBitmap); schlägt vor, den Typ von "myBitmap" in "Drawable" zu ändern. – Jaume

+0

Drawable d = neu BitmapDrawable (myBitmap); Ich habe es gelöst! Ich schätze Ihre Hilfe wirklich, danke – Jaume

+0

ah, cool, ich habe die Antwort aktualisiert. Glückliche Kodierung! –

Verwandte Themen