在我的应用程序中,我最初将TextView
的不透明度设置为60。
之后,当用户按下按钮时,我想减少或增加TextView
的不透明度,按下增加它的按钮或减少它的按钮。
我试过这个,但每当我得到文本视图的不透明度时,它的-3或-1实际上不是。
public void decreaseOpacity(View v){
int op=txtView.getBackground().getOpacity();// its alwz -ve value
txtView.getBackground().setAlpha(op-1);
}
答案 0 :(得分:1)
试试这段代码
public class AlphaTextView extends TextView {
public AlphaTextView(Context context) {
super(context);
}
public AlphaTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AlphaTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onSetAlpha(int alpha) {
setTextColor(getTextColors().withAlpha(alpha));
setHintTextColor(getHintTextColors().withAlpha(alpha));
setLinkTextColor(getLinkTextColors().withAlpha(alpha));
return true;
}
}
答案 1 :(得分:0)
Drawable.getOpacity()dos不考虑setAlpha()所做的更改。 See the docs:
请注意,返回的值不会考虑自定义Alpha 或客户通过的彩色滤镜 setAlpha(int)或setColorFilter(ColorFilter)方法。
您可能需要将alpha值存储为变量,而不是使用getOpacity(),例如:
private int mTextViewAlpha = 255;
public void decreaseOpacity(View v){
if ( mTextViewAlpha-- <= 0 ) mTextViewAlpha = 0;
txtView.getBackground().setAlpha(mTextViewAlpha);
txtView.getBackground().invalidateSelf();
}