2012-01-12 16 views
8

Quindi sto provando a modificare dinamicamente l'opacità di un TextView nella mia app Android. Ho uno seekbar e mentre faccio scorrere il pollice verso destra, lo TextView che ho sovrapposto dovrebbe iniziare a diventare trasparente. Quando il pollice raggiunge circa la metà del seekbar, il testo dovrebbe essere completamente trasparente. Sto cercando di utilizzare il metodo setAlpha(float) ereditato da Visualizza sul mio TextView, ma Eclipse mi sta dicendo che setAlpha() non è definito per il tipo TextView. Sto chiamando il metodo nel modo sbagliato? O c'è un altro modo per cambiare l'opacità?Modifica dell'opacità TextView in Android

Ecco il mio codice (classicText è il TextView, gameSelector è il seekbar):

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

risposta

37

è possibile impostare l'alfa come questo

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

come l'alfa voi ottenere dal SeekBar che verrà impostato nel colore del testo

5

metodo modifica a seguito

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

questo non funziona AFAIK. l'ho provato .. TextView non ha il metodo chiamato setAlpha(). controllalo prima di rispondere! – Hiral

+0

metodo di controllo http://developer.android.com/reference/android/view/View.html#setAlpha(float) – jeet

+0

Questo è il riferimento corretto ma non sarebbe possibile utilizzare tale metodo per la visualizzazione di testo o la visualizzazione in eclissi direttamente Si prega di controllare voi stessi.instead, è necessario personalizzare la visualizzazione del testo e quindi utilizzare quella classe nella vostra app. – Hiral

-1

View.setAlpha (float xxx);

intervallo di xxx - 0 - 255, 0 che è trasparente e 255 opaco.

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

Questo ha funzionato per me:

1. Crea classe 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. Aggiungere questo invece di utilizzare TextView per creare un TextView in xml:

... 
    <!--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. Ora è possibile utilizzare questo TextView nella vostra attività come:

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

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

Ho usato una variazione di questo per cambiare il testo alfa senza cambiare anche lo sfondo alfa, grazie! –