Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Centrar texto en un brindis en Android

Me preguntaba si había una manera de exhibir todo el texto en un pan tostado para ser centrado. Por ejemplo, tengo un brindis que tiene 2 líneas de texto en él. Por motivos puramente estéticos, me gustaría que el texto se alineara en el centro en lugar de alinearse a la izquierda. He mirado a través de la documentación y no puedo encontrar nada al respecto. ¿Hay una manera simple de hacer esto que he faltado?

Gracias Chris

  • Android: cambia el color de la fuente al hacer clic
  • Mostrar <ul> <li> en la vista de texto de android
  • ¿Cómo reducir la brecha entre el icono de navegación y el título de la barra de herramientas?
  • Obtener texto de la página web a la cadena
  • Portar clases y métodos Java a Android. (TextLayout, Font, Graphics2D, y más)
  • Android EditText vista Sugerencia flotante en el diseño del material
  • Animación simple de Android TextView
  • TextView dentro de ViewPager intercepta eventos de toque
  • 9 Solutions collect form web for “Centrar texto en un brindis en Android”

    Utilice la función setView(view) Toast para suministrar una View con Gravity.CENTER .

    Adaptado de otra respuesta :

     Toast toast = Toast.makeText(this, "Centered\nmessage", Toast.LENGTH_SHORT); TextView v = (TextView) toast.getView().findViewById(android.R.id.message); if( v != null) v.setGravity(Gravity.CENTER); toast.show(); 

    La tostada se construye en un TextView y la gravedad predeterminada de la misma queda alineada a la izquierda. Por lo tanto, usted necesita para crear su propio TextView como este, por ejemplo:

     <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical|center_horizontal" android:text="all the text you want" /> 

    Y asigna el TextView al Toast de la siguiente manera:

     Toast t = new Toast(yourContext); t.setView(yourNewTextView); 

    Es sucio hack, pero

     ((TextView)((LinearLayout)toast.getView()).getChildAt(0)) .setGravity(Gravity.CENTER_HORIZONTAL); 

    Sin los hacks:

     String text = "Some text"; Spannable centeredText = new SpannableString(text); centeredText.setSpan(new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER), 0, text.length() - 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE); Toast.makeText(getActivity(), centeredText, Toast.LENGTH_LONG).show(); 

    También hay otras alineaciones además del centro.

    fuente

     Toast toast = Toast.makeText(this, "Message", Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); 

    No sabiendo que findViewById(android.R.id.message) está mal, pero sólo en caso de que haya (futuro?) Diferencias de implementación yo mismo usé un enfoque de bit differen:

     void centerText(View view) { if( view instanceof TextView){ ((TextView) view).setGravity(Gravity.CENTER); }else if( view instanceof ViewGroup){ ViewGroup group = (ViewGroup) view; int n = group.getChildCount(); for( int i = 0; i<n; i++ ){ centerText(group.getChildAt(i)); } } } 

    y entonces:

     Toast t = Toast.makeText(context, msg,Toast.LENGTH_SHORT); centerText(t.getView()); t.show(); 

    Esta variación es con el uso de LinearLayout. 🙂

     Toast SampleToast = Toast.makeText(this, "This is the example of centered text.\nIt is multiline text.", Toast.LENGTH_SHORT); LinearLayout OurLayout = (LinearLayout) SampleToast.getView(); if (OurLayout.getChildCount() > 0) { TextView SampleView = (TextView) OurLayout.getChildAt(0); SampleView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); } SampleToast.show(); 
     Toast t=Toast.makeText(getApplicationContext(),"Text",Toast.LENGTH_LONG); t.setText("Password Does't match..."); t.setGravity(0, 0, 0); t.show(); 

    Código simple para el brindis

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.