Получение ListView Drawables и применение его вручную - PullRequest
1 голос
/ 08 сентября 2011

Я пытаюсь применить стиль, который имеет элемент списка, когда он выбран, к представлению (в моем случае TextView)

* ** 1003 тысяча два * Пример

здесь это будет стиль, окрашенный в оранжевый цвет. Я обнаружил, что этот вид определяется Drawable Object. Итак, я попытался, так что возьмите drawable и примените его к моему мнению

TextView tv = new TextView(this);     

tv.setText("Hello, Android");
tv.setBackgroundDrawable(new ListView(this).getSelector());
setContentView(tv);

но это не работает. У кого-нибудь есть идеи, как это сделать?


Хорошо, я понял, как это сделать. Я узнал, что ListView использует ColorStateList list_selector_background, который определен в android.R.drawable. Используя ResourceBrowser, я узнал, что четвертый цвет выбран для рисования, поэтому я добавил следующее в свой код

StateListDrawable listDrawables= (StateListDrawable)getResources().getDrawable(android.R.drawable.list_selector_background);
listDrawables.selectDrawable(3);
Drawable highlightDrawable = listDrawables.getCurrent();

Теперь я могу установить свой фон с помощью higlightDrawable. Я не знаю, возможно ли получить доступ к Drawable в XML, я еще не пробовал. Спасибо за помощь!

1 Ответ

2 голосов
/ 08 сентября 2011

Было бы больно делать это с помощью кода.

Вам необходимо реализовать селектор и сообщить Android, какой ресурс необходимо использовать при нажатии, включении или фокусировании вида.

Вот пример пример о том, как этого добиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...