获取ListView drawable并手动应用它

时间:2011-09-08 12:01:13

标签: android listview drawable

我正在尝试将列表项目所选的样式应用于视图(在我的情况下为TextView)

Example

这里是橙色的风格。我发现这个外观是由Drawable Object定义的。所以我尝试了,所以得到drawable并将它应用到我的视图

TextView tv = new TextView(this);     

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

但它不起作用。 有人知道怎么做吗?


好的,我想出了如何做到这一点。我发现帽子ListView使用了在android.R.drawable中定义的ColorStateList list_selector_background。使用ResourceBrowser我知道第四种颜色是选定的drawable,所以我将以下内容添加到我的代码中

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

现在我可以使用higlightDrawable设置我的背景。我不知道是否有可能访问xml中的drawable我还没有尝试过。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

通过代码来实现它会很痛苦。

你需要实现一个selector并让android知道在按下,启用或聚焦视图时需要使用哪个资源。

以下是关于如何实现相同目标的示例example