Alinea horizontalmente dos vistas de texto en un diseño

Necesito alinear horizontalmente dos textview en el centro de la pantalla. Ambas textviews tienen diferentes tamaños de fuente.

Introduzca aquí la descripción de la imagen

Aquí está mi código:

 <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="top|center_horizontal" android:orientation="horizontal" > <TextView android:id="@+id/progressstatus" android:layout_gravity="center_horizontal" android:textColor="#FFFFFF" android:textSize="50sp" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/percent" android:textColor="#CCCCCC" android:textSize="20sp" /> </LinearLayout> 

En este momento mis vistas de texto están alineadas a la izquierda y ambas están mostrando el mismo tamaño de fuente.

Intentalo:

 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" > <TextView android:id="@+id/progressstatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_vertical|right" android:text="75" android:textColor="#FFFF00" android:textSize="50sp" /> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:text="%" android:textColor="#CCCCCC" android:textSize="20sp" /> </LinearLayout> 

Explicación: establecí el diseño padre en wrap_content, significa que el padre envolvió su altura según las alturas de los niños. Hay 2 textviews en el padre. Uno tiene un tamaño de fuente más grande y otro tiene un tamaño de fuente más pequeño. Una vista más grande del tamaño de la fuente definitivamente tendría más altura entonces más pequeña. Por lo tanto, establecer la mayor altura de wrap_content. Ahora, la altura de la vista más pequeña es match_parent, significa que una más pequeña se expandiría a la altura máxima del padre que sería igual a la altura de la vista de la fuente más grande. Entonces, ambos serían center_aligned.

Introduzca aquí la descripción de la imagen

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#31BBF9" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="top|center_horizontal" android:orientation="horizontal" > <TextView android:id="@+id/progressstatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="75" android:textColor="#FFFFFF" android:textSize="50sp" /> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:text="%" android:textColor="#FFFFFF" android:gravity="center_vertical" android:textSize="20sp" /> </LinearLayout> 

Salida

Introduzca aquí la descripción de la imagen

Cambiar testview (%) android:gravity="center_vertical" a su elección

Prueba esto

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="top|center_horizontal" android:orientation="horizontal" > <TextView android:id="@+id/progressstatus" android:textColor="#FFFFFF" android:textSize="50sp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/percent" android:textColor="#FFFFFF" android:textSize="20sp" /> </LinearLayout> 

Inténtalo por favor

 <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="horizontal" > <TextView android:id="@+id/progressstatus" android:textColor="#FFFFFF" android:textSize="50sp" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="match_parent"/> <TextView android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="@string/percent" android:textColor="#CCCCCC" android:textSize="20sp" /> </LinearLayout> 

Puede utilizar la disposición relativa para lograr lo anterior. Compruebe el código a continuación

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:gravity="center_horizontal" android:orientation="horizontal" > <TextView android:id="@+id/progressstatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="75" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/percent" android:textSize="20sp" /> </LinearLayout> </RelativeLayout> 

Utilice este código en el archivo xml

  <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white_color" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="horizontal" > <TextView android:id="@+id/progressstatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textColor="#FFFFFF" android:textSize="50sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/percent" android:textColor="#CCCCCC" android:textSize="20sp" /> </LinearLayout> </RelativeLayout> 

Echa un vistazo a este

  <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:padding="20dp" > <TextView android:id="@+id/progressstatus" android:layout_gravity="center_horizontal" android:textColor="#FFFFFF" android:textSize="50sp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/percent" android:textColor="#CCCCCC" android:gravity="center" android:textSize="20sp" /> </LinearLayout> </LinearLayout> 

Puedes hacerlo usando una vista de texto

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/black" tools:context="com.example.demo.MainActivity$PlaceholderFragment" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv" android:text="75%" android:textSize="20sp" android:gravity="top" android:layout_centerHorizontal="true"/> </RelativeLayout> TextView textView = (TextView) findViewById(R.id.tv); Spannable span = new SpannableString(textView.getText()); span = new SpannableString(textView.getText()); span.setSpan(new CustomCharacterSpan(), 2, 3, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);//u can use ur own ratio using another constructor textView.setText(span, TextView.BufferType.SPANNABLE); span.setSpan(new RelativeSizeSpan(3f), 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(span); package com.example.demo; import android.text.TextPaint; import android.text.style.MetricAffectingSpan; public class CustomCharacterSpan extends MetricAffectingSpan { double ratio = 1.5; public CustomCharacterSpan() { } public CustomCharacterSpan(double ratio) { this.ratio = ratio; } @Override public void updateDrawState(TextPaint paint) { paint.baselineShift += (int) (paint.ascent() * ratio); } @Override public void updateMeasureState(TextPaint paint) { paint.baselineShift += (int) (paint.ascent() * ratio); }} 

Para más referencia, puede comprobar este enlace Dos estilos diferentes en una única vista de texto con diferentes gravedad y altura

  • Superposición u ocultar Barra de herramientas en la selección de copia / corte
  • Editar texto dentro de la vista de desplazamiento no se puede desplazar
  • La mejor manera de Android para hacer que el carrete parezca girar
  • Cómo crear una vista de forma programática
  • Android mutate () cambia la apariencia de LayerDrawable
  • LinearLayout con divisores en pre Honeycomb
  • ¿Cómo puedo calcular la altura y el ancho de la pantalla en tiempo de ejecución?
  • Incluir el mismo diseño varias veces
  • ¿Cómo agregar un SearchView a un cajón de navegación?
  • Android: Archivos de diseño Atajos de margen / relleno
  • ¿Cómo configurar varios oyentes de clics en diferentes palabras de textview?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.