0

在我的应用程序中,最初我将不透明度设置TextView为 60。之后,当用户按下按钮时,我想TextView根据按下增加它的按钮或减少它的按钮来减少或增加不透明度。我已经尝试过了,但是每次当我得到文本的不透明度时,它的 -3 或 -1 实际上不是。

 public void decreaseOpacity(View v){

    int op=txtView.getBackground().getOpacity();// its alwz -ve value
    txtView.getBackground().setAlpha(op-1);

}
4

2 回答 2

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;
  }
}
于 2013-02-26T14:00:25.963 回答
0

Drawable.getOpacity() 不考虑 setAlpha() 所做的更改。请参阅文档

请注意,返回值不考虑客户端通过 setAlpha(int) 或 setColorFilter(ColorFilter) 方法应用的自定义 alpha 或颜色过滤器。

您可能需要将 alpha 值存储为变量而不使用 getOpacity(),例如:

private int mTextViewAlpha = 255;

public void decreaseOpacity(View v){
    if ( mTextViewAlpha-- <= 0 ) mTextViewAlpha = 0;
    txtView.getBackground().setAlpha(mTextViewAlpha);
    txtView.getBackground().invalidateSelf();
}
于 2013-02-26T12:56:36.087 回答