Me preguntaba si había una manera de mostrar todo el texto en un brindis de estar centrado. Por ejemplo, yo tengo un brindis que tiene 2 líneas de texto. Por razones puramente estéticas, me gustaría que el texto alineado en el centro en lugar de alineado a la izquierda. He mirado a través de la documentación y no puede encontrar nada al respecto. Hay una manera simple de hacer esto que me he perdido?

Gracias
Chris

11 Comentarios

  1. 15

    Utilizar el Brindis del setView(view) función para el suministro de un View con Gravity.CENTER.

    • ¿Qué acerca de la Api < 23? ¿Importa?
  2. 99

    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();
    • ¿Por qué el defecto de que la gravedad no es la Gravedad.El CENTRO? Tonto android!
    • Esto debe ser aceptado respuesta!
  3. 26

    Tostadas, está construido en un TextView y el valor predeterminado de la gravedad de que está alineada a la izquierda. Así, 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 asignar el TextView para el Brindis como este :

    Toast t = new Toast(yourContext);
    t.setView(yourNewTextView);
    • No es necesario para su propio punto de vista. Ver aceptada respuesta.
  4. 19

    Es sucio hack, pero

    ((TextView)((LinearLayout)toast.getView()).getChildAt(0))
        .setGravity(Gravity.CENTER_HORIZONTAL);
    • Genial!!! Asegúrese de que la rodean con una ClassCastException de captura para ser seguro en caso de que el punto de vista de la jerarquía de los Brindis cambios en el futuro.
    • Nota: esta probado y no funcionó en la 4.0.2
    • Esto funciona en mi Nexus 4. Sugiero hacer esto, envolviéndola con una ClassCastException como Max Howell dijo el de arriba y luego vivir con ella cuando se lanza una excepción real.
    • el uso de findViewById(android.R.id.mensaje) en la vista devuelta por el pan tostado.getView() para asegurarse de código de trabajo en todas las versiones
  5. 19

    Sin 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();

    Hay también otra de las alineaciones, además de centro.

    fuente

    • trabajó como un encanto! Esto es exactamente lo que necesita!
  6. 9
    Toast toast = Toast.makeText(this, "Message", Toast.LENGTH_SHORT);
    toast.setGravity(Gravity.CENTER, 0, 0);
    toast.show();
    • Esto no centrar el texto, pero el brindis de la misma.
  7. 4

    No saing que findViewById(android.R.id.message) está mal, pero sólo en el caso de que existan (futuro?) implementación diferencias que yo mismo usé un poco diferentes de enfoque:

    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 luego:

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

    Es un trabajo para mí:

    Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
    toast.setGravity(Gravity.CENTER| Gravity.BOTTOM, 0, 20);
    toast.show();
    • Esto no funciona para mí. El texto sigue alineado a la izquierda.
  9. 2

    En kotlin:

    fun makeToast(context: Context, resId: Int) {
        val toast = Toast.makeText(context, resId, Toast.LENGTH_SHORT)
        val view = toast.view.findViewById<TextView>(android.R.id.message)
        view?.let {
            view.gravity = Gravity.CENTER
        }
        toast.show()
    }
  10. 0

    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();
    • Este es un chapucero solución que podría no funcionar en versiones futuras de android, por ejemplo, si el primer hijo no es un TextView. No siga Java estándares de codificación.
  11. -3
    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 más ser el centro de

    • Bienvenido a ASÍ. Por favor, mirar a través de la página de ayuda en responder a las preguntas.. Como está escrito, el código está mal formateado y no contiene una explicación.
    • Lo siento, pero su conjunto de código de centro de gravedad para el brindis (que aparecen en el centro de la pantalla), no para el texto

Dejar respuesta

Please enter your comment!
Please enter your name here