example - textview android studio español
Cómo deshabilitar TextView maxLines programmatically? (4)
Me está costando restablecer el atributo maxLines
de un TextView
programación.
Solo intenté configurar a 0
y no funciona. -1
bloquea la aplicación. Podría usar una solución más simple y establecer maxLines
en 5000
pero no quiero hacer eso.
Alguna idea de como hacer eso?
ACTUALIZADO
Bueno, he encontrado un problema. He establecido el Elipsis también ... Voy a utilizar la siguiente solución alternativa:
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);
Como todavía no hay una respuesta aprobada, la forma correcta de restablecer la propiedad de líneas máximas de TextView es:
textView.setMaxLines(Integer.MAX_VALUE);
Según el comentario de y esta respuesta . El uso de -1 causará una ArrayIndexOutOfBoundsException
.
Tenga en cuenta que solo se respetarán las configuraciones END
y MARQEE
setEllipsize () para líneas máximas> = 2 según la documentation :
Si setMaxLines (int) se ha utilizado para establecer dos o más líneas, END y MARQUEE * solo son compatibles (otros tipos de elipsis no harán nada).
El -1
no debería bloquear su aplicación. En realidad, esto es lo que se usa dentro de TextView
por defecto:
case com.android.internal.R.styleable.TextView_maxLines:
setMaxLines(a.getInt(attr, -1));
break;
Este fragmento de código muestra que cuando android:maxLines
no está especificado, el código usa -1
para establecer el valor a través de la función setMaxLines()
.
También hice la aplicación de prueba para verificar mis conclusiones. Y funciona bien sin fallar:
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);
}
}
Para configurar las líneas máximas para un texto use mTextView.setMaxLines (0) o tiene que medir programáticamente el texto de altura y multiplicar con el número de línea máxima. El resultado debe establecerse como el alto del texto.
si quiere tener solo una línea, ¿por qué no usa:
txtView.setSingleLine(true);