2011-06-22 17 views
32

Tengo dificultades para restablecer el atributo maxLines de TextView mediante programación.Cómo deshabilitar ProgramView maxLines programmatically?

Acabo de probar la configuración a 0 y no funciona. -1 bloquea la aplicación. Podría usar una solución más simple y configurar el maxLines en 5000, pero no quiero hacer eso.

¿Alguna idea de cómo hacer eso?

ACTUALIZADO

Bueno, he encontrado un problema .. He puesto el Ellipsize así ... Sólo voy a utilizar la siguiente solución:

TextView questionDetail = (TextView) mQuestionDetailHeader.findViewById(R.id.desc); 

questionDetail.setText(mCurrentQuestion.getQuestion()); 
questionDetail.setMaxLines(Integer.MAX_VALUE); //As in the android sourcecode 
questionDetail.setEllipsize(null); 
+0

duplicado posible de [cómo restablecer maxLines TextView Android?] (Http://stackoverflow.com/questions/5413394/how-to-reset-android-textview-maxlines) – blahdiblah

Respuesta

0

El -1 no debe bloquear su aplicación. Esto en realidad lo que se utiliza dentro de TextView por defecto:

case com.android.internal.R.styleable.TextView_maxLines: 
      setMaxLines(a.getInt(attr, -1)); 
      break; 

Esta pieza de muestra en el código, que cuando no se especifica android:maxLines, entonces código utiliza -1 para establecer el valor a través de setMaxLines() función.


También hice la aplicación de prueba para verificar mis conclusiones. Y funciona bien sin que se caiga:

public class HelloWorld extends Activity 
{   

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    {  
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity); 

     TextView text = (TextView)findViewById(R.id.text); 
     text.setMaxLines(-1);  
    } 
} 
+0

pero estoy teniendo una excepción : E/AndroidRuntime (10296): java.lang.ArrayIndexOutOfBoundsException E/AndroidRuntime (10296): en android.text.StaticLayout.getLineTop (StaticLayout.java:1240) E/AndroidRuntime (10296): en android.widget.TextView .getDesiredHeight (TextView.java:5472) E/AndroidRuntime (10296): en android.widget.TextView.getDesiredHeight (TextView.java:5443) E/AndroidRuntime (10296): en android.widget.TextView.onMeasure (TextView. java: 5412) – Valdemar

+4

Solo vi en el código fuente private void applySingleLine (boolean singleLine, boolean applyTransformation) { mSingleLine = singleLine; \t si (SingleLine) { \t \t ...} } else { setMaxLines (Integer.MAX_VALUE); setHorizontallyScrolling (falso); if (applyTransformation) { setTransformationMethod (null); } } } \t En realidad, el maxLines es Integer.MAX_VALUE. (setMaxLines (Integer.MAX_VALUE);) – Valdemar

+0

obtener cerca close si uso -1 en setMaxLines() –

-1

Para ajustar los maxLines para un uso de texto mTextView.setMaxLines (0) o si tiene a su medida programática-aliado del texto de altura y se multiplica con el número de línea máxima El resultado debe establecer como la altura de la Textview

+0

Demasiado complicado. Además, establecer setMaxLines (0) está haciendo que mi texto desaparezca ... – Valdemar

-2

si usted quiere tener una única línea, entonces ¿por qué no utilizar:

txtView.setSingleLine(true); 
+0

No es lo que quiero ... Necesito más líneas ... :( – Valdemar

+0

entonces creo que puede usar setMaxLines(). –

41

como todavía no existe una respuesta aprobada - el correcto manera de restablecer la propiedad maxlines de TextView es:

textView.setMaxLines(Integer.MAX_VALUE);

Según Valdemar 's comentario y esto stackoverflow answer. El uso de -1 causará un ArrayIndexOutOfBoundsException.

Tenga en cuenta solamente END y MARQEE setEllipsize() se respetarán los ajustes para maxLines> = 2 según la documentation:

Si setMaxLines (int) se ha utilizado para configurar dos o más líneas, FIN y MARQUEE * solo son compatibles (otros tipos de elipsis no harán nada).

Cuestiones relacionadas