android– 在版本5上使用getBackground().setAlpha的按钮 – 棒棒糖无法正常工作

android– 在版本5上使用getBackground().setAlpha的按钮 – 棒棒糖无法正常工作,第1张

概述我有这个代码,适用于自API14以来的每个版本,但在Android5.0(Lollipop)上运行不正常.下面是我想要按钮出现的方式.点击button1buttonArrivals.getBackground().setAlpha(180);buttonDepartures.getBackground().setAlpha(255);点击button2buttonArrivals.getBackground

我有这个代码,适用于自API 14以来的每个版本,但在Android 5.0(Lollipop)上运行不正常.

下面是我想要按钮出现的方式.

点击button1

buttonArrivals.getBackground().setAlpha(180);buttonDepartures.getBackground().setAlpha(255);

点击button2

buttonArrivals.getBackground().setAlpha(255);buttonDepartures.getBackground().setAlpha(180);

在Lollipop版本上,按钮显示的是相同的Alpha,但我从未设置相同的Alpha.我只是使用上面的代码.

更新24/11/2014

这是按钮的xml(autoResizebutton extends button)

br.com.timo.gru.util.autoResizebutton            androID:ID="@+ID/buttonArrivals"            androID:layout_wIDth="0dp"            androID:layout_height="match_parent"            androID:layout_weight="2"            androID:background="#00abbd"            androID:drawableleft="@drawable/icon_aviao_desemb"            androID:drawablepadding="-5dp"            androID:drawableStart="@drawable/icon_aviao_desemb"            androID:gravity="center"            androID:paddingEnd="0dp"            androID:paddingleft="2dp"            androID:paddingRight="0dp"            androID:text="@string/chegadas"            androID:textcolor="@androID:color/white"br.com.timo.gru.util.autoResizebutton            androID:ID="@+ID/buttonPartIDas"            androID:layout_wIDth="0dp"            androID:layout_height="match_parent"            androID:layout_weight="2"            androID:background="#00abbd"            androID:drawableleft="@drawable/icon_aviao_partIDa"            androID:drawablepadding="-5dp"            androID:drawableStart="@drawable/icon_aviao_partIDa"            androID:ellipsize="end"            androID:gravity="center"            androID:text="@string/partIDas"            androID:textcolor="@androID:color/white"

解决方法:

内部colorState(由colorDrawable使用)在这两个按钮(优化)之间共享,因此每当您在一个按钮的背景上更改Alpha时 – 其他按钮也会得到此更改.
您可以尝试在更改其Alpha之前改变背景drawable:

buttonArrivals.getBackground().mutate().setAlpha(180);buttonDepartures.getBackground().mutate().setAlpha(255);

您还可以阅读Romain Guy关于为什么会发生这种情况的详细解释:http://curious-creature.org/2009/05/02/drawable-mutations

但是,您似乎尝试使用AndroID选择器轻松实现某些功能.您可以为每个按钮状态指定不同的颜色(在您选择/未选择的情况下),因此在您的代码中您只需要更新状态:

buttonArrivals.setSelected(true);buttonDepartures.setSelected(false);

选择器看起来像:

<?xml version="1.0" enCoding="utf-8"?><selector xmlns:androID="http://schemas.androID.com/apk/res/androID">    <item androID:color="#ff00abbd"        androID:state_selected="true" >    </item>    <item androID:color="#b400abbd"        androID:state_selected="false">    </item></selector>
总结

以上是内存溢出为你收集整理的android – 在版本5上使用getBackground().setAlpha的按钮 – 棒棒糖无法正常工作全部内容,希望文章能够帮你解决android – 在版本5上使用getBackground().setAlpha的按钮 – 棒棒糖无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1114890.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存