Я работаю над приложением, которое включает и ExpandableListView.Мы хотели бы заменить groupIndicator одним из наших собственных.
Я создал спецификацию для индикатора, которая будет показывать другой png в зависимости от состояния селектора (расширенный или не расширенный)
<?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>
Затем я настроил свой макет xml для использования:
(Обратите внимание, что childDivider - это png высотой в один пиксель, а не цвет, потому что установка этого цвета кажетсяошибка)
Это работает, за исключением того, что наша иконка растянута вертикально.Это имеет смысл, потому что мы только что создали иконку 25x25 и надеялись на лучшее.Я пытаюсь выяснить размеры нативной иконки, чтобы я мог сопоставить ее, но тут я столкнулся с проблемой.
Копаясь в исходном коде (ExpandableListView.java), я обнаружил, что по умолчанию, класс будет использовать com.android.internal.R.styleable.ExpandableListView_groupIndicator.Итак, у меня есть идентификатор, но пока нет значка.
Я бы хотел иметь возможность сделать:
Bitmap image = BitmapFactory.decodeResource(this.getResources(), com.android.internal.R.styleable.ExpandableListView_groupIndicator);
imWidth = image.getWidth();
imHeight = image.getHeight();
Но, как предполагает «внутренний», он не виден мне впользовательское пространство.
Я также нашел getIndicate () в ExpandableListView.java, но он закрытый, поэтому я тоже не могу этого сделать.
Я довольно новичок в изученииисходный код платформы, и я не знаю, как еще отследить это изображение.Может кто-нибудь мне помочь?
Редактировать: Спасибо CommonsWare.Чтобы объяснить остальные для всех, кто ищет:
android: drawable / expander_group определена в /frameworks/base/core/res/res/drawable/expander_group.xml.
expander_group.xml упоминает, что этоиспользует @ drawable / expander_ic_maximized и @ drawable / expander_ic_minimized.Эти чертежи можно найти в /frameworks/base/core/res/res/drawable/expander_ic_maximized.9.png и /frameworks/base/core/res/res/drawable/expander_ic_minimized.9.png, среди других мест для определенных плотностейи тому подобное.«9» объясняет, почему значки по умолчанию не имеют проблем с искажением - это графика патча 9.Версии иконок, не зависящие от плотности, имеют размер 34 на 38 пикселей.