android - 获取 ListView 可绘制对象并手动应用它

标签 android listview drawable

我正在尝试将列表项在被选中时具有的样式应用到 View (在我的例子中是 TextView)

Example

这里是橙色风格。我发现这个外观是由一个 Drawable Object 定义的。所以我尝试了,所以获取可绘制对象并将其应用到我的 View 中

TextView tv = new TextView(this);     

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

但它不起作用。 有人知道如何做到这一点吗?


好的,我知道怎么做了。我发现 hat ListView 使用了在 android.R.drawable 中定义的 ColorStateList list_selector_background。使用 ResourceBrowser 我知道第四种颜色是选定的可绘制对象,所以我将以下内容添加到我的代码中

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

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

最佳答案

用代码来做会很痛苦。

您需要实现 selector并让 android 知道在按下、启用或聚焦 View 时需要使用哪个资源。

这是样本 example如何实现同样的目标。

关于android - 获取 ListView 可绘制对象并手动应用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7347677/

相关文章:

android - onperformsync 和多线程

android - 一些用户报告丢失数据

android - 动态 ListView - 设计模式

android - java.lang.IllegalStateException android.widget.ListView.layoutChildren 崩溃

android - 在 Android 上滑动即可切换标签页,例如 YouTube/Google 音乐应用

android - 动画展示适用于 14 岁以上 Android 设备

android - 将多个图像合并为一个图像

java - 无法在 Genymotion VM 中获取位置

android - 选择器的大小与 "normal"图像不同

android - Twitter Fabric - 无法解析符号