studio propiedades programacion móviles edittext desarrollo curso color aplicaciones android android-textview android-support-library autosize android-8.0-oreo

propiedades - placeholder edittext android



El tamaño automático de TextView no funciona(Android O) (8)

¿Ha intentado configurar los cuatro atributos descritos en el enlace que publicó?

P.ej

app:autoSizeTextType="uniform" app:autoSizeMaxTextSize="13sp" app:autoSizeMinTextSize="5sp" app:autoSizeStepGranularity="1sp"

También puede intentar configurar el ancho y el alto para wrap_content, y establecer minWidth y maxWidth a 56dp.

Como posiblemente también se mencionó en los comentarios, las líneas máximas parecen causar problemas (para mí también), así que intente eliminar eso (el autoajuste probablemente debería encargarse de esto, reduciendo el tamaño del texto).

Utilizo la nueva función de tamaño automático agregada en la biblioteca de soporte 26. Leí una documentación que se puede encontrar aquí: https://developer.android.com/preview/features/autosizing-textview.html

Supongo que debería funcionar de esta manera: puede habilitar el tamaño automático con este atributo: app:autoSizeTextType="uniform" . Creo que TextView debería usar todo el espacio disponible para mostrar un texto completo (no solo una parte, no debe recortarse) y el textSize del textSize debe ser lo más grande posible. Si necesita limitar un tamaño máximo o mínimo del texto, puede usar estos dos atributos:

app:autoSizeMinTextSize="XXsp" // (you can also use px or dp values.)

o

app:autoSizeMaxTextSize="XXsp"

Hasta ahora tan bueno. Digamos que necesito un TextView con 56dp de ancho. Tengo textos con una longitud diferente y quiero configurar estos textos para este TextView . Se debe redimensionar automáticamente para que muestre todo el texto (todos los caracteres + no recortados) en el mayor textSize posible.

Este es mi TextView:

<android.support.v7.widget.AppCompatTextView android:id="@+id/vName" style="@style/TextView.AutoSize" android:layout_width="56dp" android:gravity="bottom|center_horizontal" android:maxLines="1" app:autoSizeMinTextSize="1px" app:autoSizeTextType="uniform" app:layout_constraintBottom_toTopOf="@id/vGuideline" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" />

Desafortunadamente, la vista de texto está recortada. Quería establecer esta cadena como un texto en el TextView anterior: "Groupa" pero este es el resultado:

(TextView está dentro de ConstraintLayout con fondo de círculo amarillo).

Como se puede ver, la vista de texto no se redimensiona en absoluto. ¿Tienes idea de qué hacer?

Gracias.


¿Qué valor estableciste en el atributo android: layout_height?

En el documento : " Si establece el tamaño automático en un archivo XML, no se recomienda usar el valor" wrap_content "para los atributos layout_width o layout_height de TextView. Puede producir resultados inesperados " .


Además de las otras respuestas correctas, encontré otro punto que impide el funcionamiento automático.

No use android:singleLine="true" junto con el cambio de tamaño automático. Utilice el nuevo android:maxLines="1" lugar.


Configura tu TextView esta manera

<TextView android:id="@+id/vName" android:layout_width="56dp" android:layout_height="wrap_content" android:maxLines="1" android:text="Groupa" app:autoSizeMinTextSize="12sp" app:autoSizeMaxTextSize="20sp" app:autoSizeTextType="uniform" />

Funciona bien en Android 22, 23, 26


En mi caso, el problema era algo muy estúpido: aunque el autoajuste siempre funcionaba bien para mí, en exactamente un TextView usé android: espacio de nombres en lugar de app: :! Estaba totalmente ajeno a mi error y me preguntaba por qué no funcionaba. Por lo tanto, cuando utilice un tema de AppCompat asegúrese siempre de usar los atributos de AppCompat , no los nativos.


He probado esto para algunas situaciones, y tengo la siguiente conclusión:

Debes tener ancho y altura acotados. Por ejemplo, si configuras el ancho para que sea match_parent pero wrap_content for height, creo que Android no sabe qué tan alto quieres estirar el texto. En tu ejemplo, no tienes una altura específica, así que creo que por eso no funciona.

Por ejemplo:

No sé por qué el documento oficial de Android usaría wrap_content como ejemplo ...

Y como puede ver, no usé otros atributos en mi ejemplo, por lo que probablemente no sea el problema de los atributos incorrectos.

Y, sí, el TextView que estoy usando es android.support.v7.widget.AppCompatTextView .

Y mientras esté utilizando la biblioteca de soporte 26.0.0 o superior, será suficiente.

EDITAR:

En cuanto a ConstraintLayout , el principal es el mismo. Debe tener ancho y altura acotados, lo que significa uno de los siguientes para cada dimensión:

  1. Ha especificado un valor absoluto para esa dimensión (ancho o alto)

  2. Has establecido Restricción en ambas direcciones

Por ejemplo:

ACTUALIZACIÓN: (2017-09-21)

He probado que, lamentablemente, parece que aún no es compatible con el tipo de letra personalizado, que es una función publicada en conjunto en la biblioteca de soporte v26 ...


Si no sabes el tamaño de la vista de texto. por ejemplo, los coloca en linearlayout y establece la altura o el ancho en 0dp. entonces tengo una solucion debe establecer AutoSizeTextTypeWithDefaults en el evento OnSizeChanged.

@Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { this.setAutoSizeTextTypeWithDefaults(AUTO_SIZE_TEXT_TYPE_UNIFORM); }


Tuve el mismo problema. Lo resolví cambiando dos líneas en mi gradle: compile ''com.android.support:support-v4:26.0.1'' y compile ''com.android.support:appcompat-v7:26.0.1'' Para encajar textos más largos tienes para agregar las cuatro opciones, como esta:

<android.support.v7.widget.AppCompatTextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/your_string" app:autoSizeTextType="uniform" app:autoSizeMaxTextSize="13sp" app:autoSizeMinTextSize="5sp" app:autoSizeStepGranularity="1sp"/>