Frage

Ich arbeite an einer Anwendung, die und ExpandableListView beinhaltet. Wir möchten den groupIndicator mit einem unserer eigenen Wahl ersetzen.

habe ich eine Spezifikation für den Indikatoren, der eine andere png in Abhängigkeit vom Zustand des Wählers (erweitert oder nicht erweitert)

zeigen würde,
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/arrow_down" android:state_expanded="true"/>
    <item android:drawable="@drawable/arrow_right"/>    
</selector>

ich dann mein Layout xml Verwendung einzurichten:

(Beachten Sie, dass childDivider ist ein ein Pixel groß png eher als eine Farbe, weil Einstellung, die auf eine Farbe abgehört zu sein scheint)

Das funktioniert, mit der Ausnahme, dass unser Symbol vertikal ausgestreckt. Das macht Sinn, weil wir nur ein 25x25 icon erstellt und hoffte das Beste. Ich versuche, herauszufinden, die Dimensionen des nativen Symbols, so dass ich es bieten kann, aber das ist, wo ich in Schwierigkeiten geraten.

Graben durch den Quellcode (ExpandableListView.java) Ich fand, dass standardmäßig wird die Klasse com.android.internal.R.styleable.ExpandableListView_groupIndicator verwenden. Also habe ich eine ID haben, aber kein Symbol vor.

Ich würde gerne in der Lage sein zu tun:

Bitmap image = BitmapFactory.decodeResource(this.getResources(), com.android.internal.R.styleable.ExpandableListView_groupIndicator);
        imWidth = image.getWidth();
        imHeight = image.getHeight();

Aber als die „interne“ schon sagt, es ist nicht für mich sichtbar im User-Space.

Ich fand auch getIndicate () in ExpandableListView.java, aber es ist privat, so dass ich auch nicht zu, dass bekommen.

Ich bin ganz neu zu tauchen in die Plattform Quellcode, und ich weiß nicht, wie sonst das Bild auf der Spur. Kann mir jemand helfen aus?

Edit: Danke CommonsWare. Buchstabieren den Rest für jemand anderes heraus suchen:

Android. Ziehbar / expander_group in /frameworks/base/core/res/res/drawable/expander_group.xml definiert
expander_group.xml erwähnt, dass es verwendet @ ziehbar / expander_ic_maximized und @ ziehbar / expander_ic_minimized. Diese Drawables können in /frameworks/base/core/res/res/drawable/expander_ic_maximized.9.png und /frameworks/base/core/res/res/drawable/expander_ic_minimized.9.png, unter anderem für spezifische Dichten gefunden werden und derartige. Die „9“ erklärt, warum die Standardsymbole nicht Verzerrung Probleme haben - sie sind Patch-9 Grafiken. Die Dichte unabhängige Versionen der Symbole sind 34px 38px durch.

War es hilfreich?

Lösung

base.git der core/res/res/values/styles.xml definiert com.android.internal.R.styleable.ExpandableListView_groupIndicator als android:drawable/expander_group. Das ist ein StateListDrawable in Ihrem SDK Kopie der Ressourcen. Die zu Grunde liegenden PNGs sind von unterschiedlicher Größe, basierend auf Dichte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top