2011-07-11 18 views
9

¿Hay alguna manera de ocultar algunos (pero no todos) el texto en un TextView? Intenté configurar el tamaño en 0 con AbsoluteSizeSpan, pero eso no tiene ningún efecto visual que veo. (Puede establecer el tamaño en 1, y esencialmente obtiene líneas con baches en lugar de texto legible. Lindo, pero no es lo que busco)¿Hay alguna manera de ocultar texto en un TextView?

Por ocultar, quiero decir ir, no ser visible y no tomar espacio arriba No es lo que estoy buscando dibujar texto con el mismo color que el fondo.

Me doy cuenta de que puedo simplemente reemplazar el texto en el TextView con solo el texto que quiero mostrar, pero ya estoy usando los tramos para hacer un estilo mucho más dinámico, y algo así como un HiddenSpan sería útil. ¿Existe?

+0

¿Cómo se define escondido en este contexto? Solo visibilidad? – AlfredoVR

+0

Editado para aclarar: no se muestra, no ocupa espacio. –

+0

Algún contexto puede ser útil. ¿Existe alguna razón por la que no solo configureText para lo que quiere que sea el Texto? – CrackerJack9

Respuesta

1
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="0sp" 
    android:textColor="@android:color/transparent" /> 

El texto de color transparente oculta la visibilidad del texto. Agregue textSize a eso para eliminar o minimizar el espacio que ocupa.

+0

¿Intentó esto y lo hizo funcionar? Cuando probé un tamaño de texto de 0, dejó el texto como el tamaño predeterminado. Un tamaño de texto de 1 no lo hace, ya que ocupa espacio incluso si tiene el mismo color que el fondo. (Además, su xml no resuelve el problema en absoluto, ya que se aplica a todo el texto en el control, no parte del texto.) –

9

Creo que está buscando: TextView.setVisibility(View.GONE)

+1

Esto oculta el control, pero la pregunta es sobre ocultar partes del texto dentro del control - no son lo mismo. –

+0

luego setText() sin el texto que desea ocultar – CrackerJack9

3

acabo de tener este problema y escribí la clase siguiente:

public class NoDisplaySpan extends ReplacementSpan { 

    public NoDisplaySpan() {} 

    @Override 
    public void draw(Canvas arg0, CharSequence arg1, int arg2, int arg3, 
      float arg4, int arg5, int arg6, int arg7, Paint arg8) {} 

    @Override 
    public int getSize(Paint paint, CharSequence text, int start, int end, 
      FontMetricsInt fm) { 
     return 0; 
    } 
} 

Parece que funciona sólo dentro de un párrafo; Obtengo una ArrayIndexOutofBoundsException lanzada cuando configuro el lapso para extender más allá de una nueva línea. Me encantaría saber si alguien puede resolverlo.

0

acaba de tener este problema. Básicamente, solo muestra una parte de la cadena utilizando subcadena o lo que sea y si hace clic en la vista de texto, establece el texto completo en ella.

Espero que pueda ayudar a alguien que esté pasando por ese tema. (Puede copiar pegar un snipet de código si es necesario).

+0

pegue una muestra de código si puede. –

+0

Esto es solo un duplicado del comentario de @ CrackerJack9. AFAIK, la respuesta sigue siendo "esto no es posible". (Sí, puedes cambiar el texto que estás mostrando. De eso no se trata la pregunta). –

0

No estoy seguro si todavía está buscando una respuesta a esto, ya que es muy antiguo, pero lo encontré mientras buscaba algo y pensé que podría ayudarlo. ¿Has intentado configurar un botón en el teclado o un botón de hardware para alternar entre el TextView visible y uno oculto? Tendría que jugar con copiar texto de visible a oculto si desea mantener el visible como parte de lo oculto. Si desea que el oculto sea su propio texto, esta será una solución fácil.

6

intento por este código:

tengo completa por este código ..

<TextView 
android:id="@+id/tvi" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:visibility="invisible" 

o

android:visibility="gone" 
/> 

o por código: -

TextView txtView = (TextView)findViewById(R.id.tvi); 
    txtView.setVisibility(View.INVISIBLE); 

O

txtView.setVisibility(View.GONE); 

Puede ser que esto le ayudará

Cuestiones relacionadas