¿Cómo usar textview.getLayout ()? Devuelve null
Estoy tratando de establecer un diseño para textview
para que pueda utilizar el método getEllipsisCount()
. Pero debajo del código devuelve nulo como valor de disposición. ¿Cómo puedo tomar el diseño y luego utilizar el getEllipsisCount(0)
.
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView mytextview =(TextView) findViewById(R.id.textView1); mytextview.setText(myText); Layout layout = mytextview.getLayout(); if(layout != null){ mytextview.settext("very good layout worked\n"); } }
- Android enlaza sin primer carácter
- TextView y Ellipsize cuando es apretado por otro TextView
- TextView en TableRow está parcialmente oculto
- Modificación del comportamiento de la línea
- Nueva línea no deseada en TextView utilizando HTML
- Desplazamiento de un TextView a una línea específica
- Estilo de texto de Android falta de luz, medio, delgado,
- Copiar texto de TextView en Android
- "IllegalStateException: scrollview puede alojar sólo un hijo directo" en un LinearLayout añadiendo
- Android - Texto seleccionable: selecciona parte de un texto
- Espaciado de párrafos con SpannableStringBuilder en TextView
- Las extensiones de vínculo se pierden de la conversión de ListView
- Para dibujar un subrayado debajo de TextView en Android
Usted lo está llamando demasiado pronto, thats porqué está volviendo null
Prueba esto
ViewTreeObserver vto = mytextview.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Layout layout = mytextview.getLayout(); } });
De la documentación :
Public final Diseño getLayout ()
Añadido en el nivel 1 de API Devuelve el diseño que se está utilizando actualmente para mostrar el texto. Esto puede ser nulo si el texto o el ancho ha cambiado recientemente.
Así que probablemente su texto tiene cambios o lo llaman demasiado pronto.
Mira esta respuesta donde se dice
Esto sólo funciona después de la fase de diseño, de lo contrario el diseño devuelto será nulo, así que llame a esto en un lugar apropiado en su código.
En primer lugar, no sé si es un error tipográfico o es intencional, pero ha declarado un método "settext" en lugar del setText
predefinido. Sin embargo, para obtener una referencia de su diseño le sugiero lo siguiente:
LayoutInflater inflater = getLayoutInflater(); RelativeLayout textViewLayout = (RelativeLayout) inflater.inflate(R.layout.activity_main,null); if(textViewLayout!=null) { mytextview.setText("very good layout worked\n"); }
Suponiendo que su TextView pertenece a un RelativeLayout
.
Llame a mytextview.getLayout()
en onStart
o onResume
callback.
Llamada
TextView.onPreDraw();
Crea el diseño.
- Renderscript a través de la biblioteca de soporte
- Android: Excepción en org.eclipse.swt.SWTError: No hay más controladores [gtk_init_check () falló)