2012-01-12 25 views
8

Estoy intentando cambiar dinámicamente la opacidad de TextView en mi aplicación de Android. Tengo un seekbar y cuando deslizo el pulgar a la derecha, el TextView que tengo debajo debe comenzar a ser transparente. Cuando el pulgar llegue aproximadamente a la mitad del seekbar, el texto debería ser completamente transparente. Estoy tratando de utilizar el método setAlpha(float) heredado de Ver en mi TextView, pero Eclipse me dice setAlpha() no está definido para el tipo TextView. ¿Estoy llamando al método de la manera incorrecta? ¿O hay otra forma de cambiar la opacidad?Cambiar la Opacidad de TextView en Android

Aquí está mi código (classicText es el TextView, gameSelector es el seekbar):

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

Respuesta

37

puede establecer el alfa como esto

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

como el alfa que ir de la barra de búsqueda que se establecerá en el color del texto

5

método de cambio al siguiente

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

esto no funciona AFAIK. lo he intentado ... TextView no tiene un método llamado setAlpha(). ¡Compruébelo antes de responder! – Hiral

+0

método de comprobación http://developer.android.com/reference/android/view/View.html#setAlpha(float) – jeet

+0

Esta es la referencia correcta, pero no podría utilizar dicho método para la vista de texto o la vista en su eclipse directamente . Por favor, compruebe usted mismo. En su lugar, debe personalizar la vista de texto y luego usar esa clase en su aplicación. – Hiral

-1

View.setAlpha (xxx float);

rango de xxx - 0 - 255, 0 siendo transparente y 255 opaco.

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

Esto funcionó para mí:

1. Crear clase 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. Añadir esta vez de usar Vista de Texto para crear un TextView en su 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. Ahora puede utilizar este TextView en su actividad como:

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

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

Utilicé una variación de esto para cambiar el texto alfa sin cambiar también el fondo alfa, ¡gracias! –