Android如何在点击时使视图突出显示?
Posted
技术标签:
【中文标题】Android如何在点击时使视图突出显示?【英文标题】:Android how to make View highlight when clicked? 【发布时间】:2011-03-16 20:16:10 【问题描述】:我有一个线性布局,其中每一行都以编程方式膨胀,我希望这些行在单击时表现得像 ListView。也就是说,我希望该行以与默认 ListView 完全相同的方式/颜色突出显示。我该怎么做呢?
【问题讨论】:
【参考方案1】:好的,我终于想出了如何做到这一点......基本上它是使用一个选择器来完成的在 ListView 中使用的可绘制对象:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@android:drawable/list_selector_background" />
</selector>
并使用这个 xml 作为我的视图的背景。
所有公开的默认drawable都可以在这里找到:http://developer.android.com/reference/android/R.drawable.html
【讨论】:
感谢您在找到后分享。 如果你和我一样需要一些有关如何使用这种选择器的背景知识,请阅读:android-journey.blogspot.com/2009/12/android-selectors.html 你碰巧知道如何选择文本视图吗?我有两个片段 1 一个列表视图和 1 个文本视图的信息。一旦选择了列表视图中的项目,文本视图中的项目就会更改。有没有办法让选定的列表项保持选中状态?【参考方案2】:我可以通过以下方式对我想要表现得像列表项的文本视图做同样的事情:
<Textview
....
android:background="@android:drawable/list_selector_background"
/>
【讨论】:
这是最好的解决方案。谢谢 好答案。对于 API 11 及更高版本,请改用android:background="?android:attr/selectableItemBackground"
。更多信息here:
.. 使用 appcompat-v7 库,您现在可以使用 ?attr/selectableItemBackground 来实现向后兼容性【参考方案3】:
This 可能是个不错的起点。
虽然,我建议您使用 ListView 本身,而不是再次实现它。
【讨论】:
我会使用 ListView 但是我不需要它滚动并将其放置在 ScrollView 中,这似乎不可能(??)......所以我最终尝试实现我自己的 ListView使用 LinearLayout 进行排序。 谢谢或链接...但是是否可以引用和使用默认的 ListViews 选择器元素而不是创建我自己的元素? 您可以在 Android 源代码中搜索 XML...然后将其复制过来?我不确定你是否引用了现有的选择器,否则。 抱歉无法弄清楚 ListView 使用的是哪一个...无论如何我尝试创建自己的,但它似乎没有工作但有问题:我希望整个 LinearLayout 突出显示所以我应该使用什么属性设置为颜色选择器?我尝试使用 textColour 但这似乎不起作用,背景使它崩溃,因为我只能将可绘制或单一颜色设置为背景:S【参考方案4】:如果您对此仍有疑问,请记住某些 UI 元素不可点击(RelativeLayout),因此您必须再添加一行:
<RelativeLayout
....
android:clickable="true"
...
【讨论】:
【参考方案5】:到您的列表视图设置属性
android:listSelector="@color/test"
这个测试颜色设置任何你喜欢的透明颜色。你可以使用hex transparent color创建任何透明颜色
【讨论】:
以上是关于Android如何在点击时使视图突出显示?的主要内容,如果未能解决你的问题,请参考以下文章
Altair 交互式线图,单击右侧图标时使线条弹出并突出显示
如果在 Android Studio 上突出显示至少一个子视图,则突出显示可扩展列表视图的标题视图
如何在 iOS SDK 中禁用 UIView/UIViewController 的“突出显示子视图”消息?