android中textview的不透明度

时间:2013-02-26 12:51:51

标签: android textview opacity

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

 public void decreaseOpacity(View v){

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

}

2 个答案:

答案 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();
}