【发布时间】:2020-06-08 18:11:36
【问题描述】:
我正在开发一个组件库,我目前正在开发按钮组件,但是当涉及到具有透明背景颜色的禁用按钮时,我遇到了问题,android 只是将按钮设置为灰色背景颜色。
我在这里设置颜色
typeStyles.put("defaultBackgroundColor", context.getResources().getColor(R.color.color_transparent));
我在这里恢复颜色
this.mDefaultBackgroundColor = buttonType.styles.get("defaultBackgroundColor");
我有几种类型的按钮,所以每个按钮都有不同的配置。
导致我出现问题的按钮如下
图像按钮是一个处于禁用状态且背景透明的按钮,问题是它在按钮上设置了灰色。
我在这里设置不透明度。
int mColor = mDefaultBackgroundColor;
byte factor = 125;
float alpha = getResources().getFloat(R.dimen.opacity_intense);
float2ByteArray(alpha);
int color = (factor << 24) | (mColor & 0x00ffffff);
disabledDrawable.setColor(color);
disabledDrawable.setStroke(mBorderWidth, mDefaultBackgroundColor);
if (!mEnabled)
this.setAlpha(.5f);
【问题讨论】:
-
背景颜色由选择器定义。禁用状态是其中一种状态。
-
红色背景的按钮正常工作,只有透明背景的按钮不工作。