【问题标题】:Android how to make View highlight when clicked?Android如何在点击时使视图突出显示?
【发布时间】:2011-03-16 20:16:10
【问题描述】:

我有一个线性布局,其中每一行都以编程方式膨胀,我希望这些行在单击时表现得像 ListView。也就是说,我希望该行以与默认 ListView 完全相同的方式/颜色突出显示。我该怎么做呢?

【问题讨论】:

    标签: android xml listview layout user-interface


    【解决方案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创建任何透明颜色

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-02
        • 2012-12-31
        • 2017-07-06
        • 2020-05-07
        • 2013-07-05
        • 2017-09-20
        • 2020-07-16
        • 2016-08-28
        相关资源
        最近更新 更多