2013-02-26 22 views
0

在我的應用程序的TextView的,起初我設置的TextView不透明度爲60 之後,當用戶按下一個按鈕,我想減少或增加TextView的不透明度爲每根按壓在增加它的按鈕或減少它的按鈕。 我試過這個,但每次當我得到文本的不透明度時,它的-3或-1實際上不是。混濁的Android

public void decreaseOpacity(View v){ 

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

} 

回答

0

Drawable.getOpacity()dos不考慮setAlpha()所做的更改。 See the docs

注意,返回值不考慮到已經通過 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(); 
} 
+0

我應該在上面的代碼做? – 2013-02-26 13:11:32

+1

我已經添加了一個簡單的例子。請注意,我沒有編譯它,所以錯別字是可能的;) – kamituel 2013-02-26 13:14:48

+0

它不工作..不會在一次更改 – 2013-02-26 13:20:20

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; 
    } 
}