【问题标题】:Android RelativeLayout change color onClickAndroid RelativeLayout 改变颜色 onClick
【发布时间】:2014-02-24 18:41:37
【问题描述】:

如何像普通按钮一样更改我用作可点击点击的相对布局的颜色? 就像我想要一个视觉反馈一样,布局被按下了。

我尝试使用绑定到背景属性的选择器,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_focused="true" android:color="@android:color/black"/>
   <item android:state_pressed="true" android:state_enabled="false" android:color="@android:color/black" />
   <item android:color="@android:color/white"/>
</selector>

并在布局背景中使用它...

android:background="@color/layout_selector"

但这给了我一个 Inflate Exception...

有什么想法吗?

【问题讨论】:

    标签: java android


    【解决方案1】:

    尝试以下步骤:

    res --> values 文件夹中创建 color.xml 内容:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>     
        <color name="black">#000000</color> 
        <color name="white">#ffffff</color>
    </resources>
    

    由于选择器中的&lt;item&gt; 标记需要drawable 属性或定义drawable 的子标记,因此您的layout_selector.xml 文件(保存在res --> drawable 中) 应该是这样的:

    <?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android">   
        <item android:state_focused="true" android:drawable="@color/black"/> 
        <item android:state_pressed="true" android:state_enabled="false" android:drawable="@color/black" />
        <item android:drawable="@color/white"/> 
     </selector>
    

    另外,如前所述,相对布局应该是可点击的 (android:clickable="true")

    背景设置为android:background="@drawable/layout_selector"

    希望对你有帮助

    【讨论】:

    • 优秀。这就像一个魅力。事实上的问题是它必须是一个可绘制资源,而不是在 android:color 列表中。
    • @AVirvara:我也做了同样的事情。当der没有关注它时。它显示白色背景但是当我点击它时,它不会将它切换为黑色我不知道为什么?我已经设置了所有属性。任何建议表示赞赏。
    • 就像 GuyFawkes 所说,当您将选择器分配给带有 android:background 的布局时,在选择器中使用 android:color 会给您一个巨大的异常
    • 非常感谢。删除 android:state_enabled="false".its 后工作正常
    • 在我的情况下,它仅在删除 android:state_enabled="false" 后才有效,并且它也适用于在 RelativeLayout 中使用和不使用 android:clickable="true"
    【解决方案2】:

    在 RealtiveLayout 的 android:background 属性上使用 selector。 同时使布局可点击(通过android:clickable="true")。

    【讨论】:

    • 我按照你的建议试过了,但它不起作用。相应地编辑了帖子。
    • 你把选择器文件放在哪里了?如果您将它们放在 /drawable/ 中,请使用 @drawable/layout_selector
    • 我复制了drawable中的文件并按照您的建议使用它,但仍然是同样的错误...Unable to start activity ComponentInfo{com.app/com.views.MainView}: android.view.InflateException: Binary XML file line #50: Error inflating class &lt;unknown&gt;
    • 由于我不知道的原因,android:background 不能使用颜色选择器 - 它必须是可绘制选择器(这意味着你应该用 android:drawable 替换 android:color 标签,并将一些 1x1 放入可绘制对象中px black / white pngs。不是最好的解决方案,但是...
    • AFAIK,背景资源必须是可绘制的,而不是颜色列表(检查stackoverflow.com/questions/3953606/…
    【解决方案3】:

    布局不会显示在屏幕上。他们只能限制观点。您应该添加一些视图,然后将 onClick 侦听器添加到该视图。

    可能重复:Android clickable layout

    【讨论】:

      【解决方案4】:

      把这个layout_selector.xml放到drawable文件夹中,即(res>drawable>layout_selector.xml) 然后设置android:background="@drawable/layout_selector" 而不是android:background="@color/layout_selector"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-30
        • 1970-01-01
        • 2013-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多