2012-01-12 49 views
8

所以我試圖動態更改我的android應用中的TextView的不透明度。我有一個seekbar,當我將拇指向右滑動時,TextView下面的分層應該開始變得透明。當拇指到達seekbar的大約一半時,文本應該完全透明。我試圖使用從我的TextView上的View繼承的setAlpha(float)方法,但Eclipse告訴我setAlpha()對於TextView類型是未定義的。我是否以錯誤的方式調用該方法?還是有另一種方法來改變不透明度?在Android中更改TextView的不透明度

這是我的代碼(classicTextTextViewgameSelectorseekbar):

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch){ 
    classicText.setAlpha(gameSelector.getProgress()); 
} 

回答

37

,你可以這樣設置

int alpha = 0; 
((TextView)findViewById(R.id.t1)).setTextColor(Color.argb(alpha, 255, 0, 0)); 

,你從將被設置成文本顏色

5

變化方法以下

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) 
{ 
    classicText.setAlpha((float)(gameSelector.getProgress())/(float)(seekBar.getMax())); 
} 
+0

這不工作AFAIK。我已經嘗試過了.TextView沒有名爲setAlpha()的方法,請在回答前檢查它! – Hiral 2012-01-12 05:24:41

+0

檢查方法http://developer.android.com/reference/android/view/View.html#setAlpha(float) – jeet 2012-01-12 05:31:51

+0

這是正確的參考,但你不能在你的eclipse中直接使用這種方法來瀏覽或查看你的eclipse請檢查自己。相反,您需要自定義textview,然後在您的應用中使用該類。 – Hiral 2012-01-12 05:52:50

-1

View.setAlpha(浮動XXX);

xxx - 0 - 255的範圍,0是透明的,255是不透明的。

int progress = gameSelector.getProgress(); 
int maxProgress = gameSelector.getMax(); 
float opacity = (progress/maxProgress)*255; 
classicText.setAlpha(opacity); 
9

這爲我工作搜索條獲取阿爾法阿爾法:

1.創建類AlphaTextView.class

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)); 
    getBackground().setAlpha(alpha); 
    return true; 
    }  
} 

2.添加這個,而不是使用TextView的在你的XML創建一個TextView:

... 
    <!--use complete path to AlphaTextView in following tag--> 
    <com.xxx.xxx.xxx.AlphaTextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="sample alpha textview" 
     android:gravity="center" 
     android:id="@+id/at" 
     android:textColor="#FFFFFF" 
     android:background="#88FF88" 
     /> 
... 

3.現在你可以使用這個TextView的在你的活動,如:

at=(AlphaTextView)findViewById(R.id.at); 

at.onSetAlpha(255); // To make textview 100% opaque 
at.onSetAlpha(0); //To make textview completely transperent 
+0

我使用了這種變化來改變文本阿爾法而不改變背景阿爾法,謝謝! – 2018-01-12 22:08:08