gpt4 book ai didi

android - 版本 5 上带有 getBackground().setAlpha 的按钮 - Lollipop 无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:03 26 4
gpt4 key购买 nike

我有这段代码,适用于自 API 14 以来的每个版本,但在 Android 5.0 (Lollipop) 上无法正常工作。

下面是我希望按钮的显示方式。

enter image description here


点击button1


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

enter image description here


点击按钮2


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

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

2014 年 11 月 24 日更新

这是按钮的 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 使用)在这 2 个按钮之间共享(优化),因此无论何时更改一个按钮背景上的 alpha - 其他按钮也会得到此更改。您可以尝试在更改其 alpha 之前改变背景可绘制对象:

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 的按钮 - Lollipop 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27115181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com