Tengo una horizontal que LinearLayoutcontiene una TextViewseguida de una Spinnerjunto a ella. Esto LinearLayoutse infla dinámicamente varias veces en una vertical fija LinearLayoutcontenida dentro de a RelativeLayout.
El problema es que desde que cambié de Theme.lighta Theme.holo.light, la última línea TextViewse corta a la mitad. Esto sucede cuando el texto dinámico es largo y ocupa más de una fila.

He podido solucionar esto agregando relleno inferior al horizontal que LinearLayoutcontiene TextViewy Spinner.
Esto no se siente como una solución, sino más como un truco. ¿Alguien puede darme algún consejo sobre cómo solucionar esto correctamente?
También he leído algunas otras preguntas, pero ninguna parece ayudar.
Diseño lineal horizontal:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:text="TextView"/>
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
Diseño relativo donde el diseño anterior se infla dinámicamente en el diseño lineal con id ll2_7:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/relLayoutButtonNext"
android:layout_below="@id/textView1" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp" >
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="30dp"
android:text="2.7" />
<TextView
android:id="@+id/textView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_toRightOf="@id/textView10"
android:text="@string/question2_7" />
<LinearLayout
android:id="@+id/ll2_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView11"
android:layout_below="@+id/textView11"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
EDITAR: Aquí está el xml de diseño completo para arriba:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
style="@style/question_section_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/question2_header" />
<RelativeLayout
android:id="@+id/relLayoutButtonNext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/bottomBar"
android:paddingBottom="3dp"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:paddingTop="3dp" >
<Button
android:id="@+id/buttonNext"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:onClick="nextStep"
android:text="Next Section"
android:textSize="20sp" />
<Button
android:id="@+id/buttonPrevious"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:onClick="previousStep"
android:text="Previous Section"
android:textSize="20sp" />
</RelativeLayout>
<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/relLayoutButtonNext"
android:layout_below="@id/textView1" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp" >
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="30dp"
android:text="2.7" />
<TextView
android:id="@+id/textView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_toRightOf="@id/textView10"
android:text="@string/question2_7" />
<LinearLayout
android:id="@+id/ll2_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView11"
android:layout_below="@+id/textView11"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView10"
android:layout_below="@+id/ll2_7"
android:text="2.8" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_7"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_8" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView3"
android:layout_below="@+id/textView3"
android:layout_marginBottom="20dp"
android:orientation="vertical" >
</LinearLayout>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/ll2_8"
android:text="2.9" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_8"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_9" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView5"
android:layout_toRightOf="@+id/textView10"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView4"
android:layout_below="@+id/ll2_9"
android:text="2.10" />
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_9"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_10" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView7"
android:layout_marginBottom="20dp"
android:layout_toRightOf="@+id/textView10"
android:orientation="vertical" >
</LinearLayout>
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView6"
android:layout_below="@+id/ll2_10"
android:text="2.11" />
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_10"
android:layout_toRightOf="@+id/textView10"
android:text="@string/quesiton2_11" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView9"
android:layout_below="@+id/textView9"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
<TextView
android:id="@+id/textView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView8"
android:layout_below="@+id/ll2_11"
android:text="2.11.1" />
<TextView
android:id="@+id/textView13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_11"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_11_1" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_11_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView13"
android:layout_toRightOf="@+id/textView10"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
fuente

Respuestas:
Encontré el mismo problema de corte que se muestra en la captura de pantalla. Es causado por la alineación de la línea de base en la horizontal
LinearLayout.TextViewySpinnertienen diferentes líneas de base debido a la diferencia de tamaño de fuente. Para solucionar el problema, es necesario deshabilitar la alineación de la línea de base para el diseño configurando:o en el código:
fuente
Después de probar un millón de cosas diferentes, creo que tengo la respuesta.
LayoutGravityApliqué un al elemento TextView:Parece resolver todos los problemas de recorte que tuve. Espero que esto ayude a alguien con el mismo problema.
fuente
@android:style/Widget.TextViewy agrego las siguientes líneas:<item name="android:gravity">fill</item><item name="android:padding">1sp</item>android:baselineAligned="false"a suLinearLayoutTuve el mismo problema y descubrí que simplemente agregando
la última línea de texto ya no tenía sus descendientes recortados.
fuente
Agregué un espacio ficticio después del texto agregando
Probé todas las demás soluciones, pero esta fue la única solución que funcionó para mí.
fuente
Coloque la vista de texto problemática dentro de un diseño de marco. Creo que la vista de texto no se calcula correctamente debido a la vista de hermanos, Spinner.
fuente
CheckBoxen el mismoLinearLayout. Esto resolvió el problema.Cuando esto ocurra, debe asegurarse de que
TextViewno esté creciendo más grande que su contenedor -Si a
TextViewse establece enwrap_contenty su contenedor (o un contenedor ancestro) no deja espacio paraTextViewque crezca, se puede ocluir.Si ese no es el caso, también es posible la
onMeasure()de laTextViewveces no mide correctamente las colas de letras, caracteres no latinos o los efectos de texto que se está en cursiva. Puede corregir esto configurando un estilo global para usted,TextViewpor lo que se seleccionará sin necesidad de cambiar toda su base de código:Asegúrese de que su aplicación / actividades use un tema personalizado como este:
La respuesta de @Rynadt fue realmente útil para llegar a la etapa anterior. Establecer la gravedad del texto dentro de la vista asegura en algunos dispositivos que la oclusión nunca se produce (el texto se ajusta correctamente dentro de la vista), en otros, una mano amiga con el relleno de un valor sp, asegura que las colas y otros se tengan en cuenta con un valor específico de TextSize.
fuente
Mi solución estaba cerca de la aceptada, pero tuve que cambiarla a
en lugar. De lo contrario, las otras filas también se habrían estirado con saltos de línea agregados en lugares aleatorios. Por ejemplo, la fila más grande tenía 4 líneas, por lo que se cambió otra fila de
this is a testphrasea
fuente
Encontré una solución diferente extendiendo TextView y agregando una clase personalizada como esta:
fuente
this.setEllipsize(TextUtils.TruncateAt.END);la declaración if anterior y elimineandroid:ellipsize="end"del XML que por alguna razón lo rompe.intente eliminar android: paddingBottom = "20dp"
de
fuente
getViewTreeObserver().addOnGlobalLayoutListenerno funciona en una vista de reciclador. Si está usando un reciclador, useView.addOnLayoutChangeListener:Descubrí que la elipsización que definí
textViewen xml no siempre se reflejaba, así que la configuré programáticamente antes de reasignar la propiedad de texto. Esto funcionó para mí.fuente
Si tiene este problema y se
TextViewencuentra dentro de aRelativeLayout, intente cambiar elRelativeLayoutpor aLinearLayout.Eso me solucionó el problema
fuente
Puede utilizar un detector de diseño global para TextView en cualquier tipo de ViewGroup.
Puedes leer más sobre esto aquí.
fuente
Creo que es muy poco lo que puede hacer para que esto funcione modificando los diseños. Como he descubierto, algunos métodos funcionan solo en algunos casos. Creo que depende de toda la jerarquía de diseño y no es una solución única para todos. También he notado que sucede especialmente cuando tiene una fuente diferente que desea establecer en TextView.
Un método de disparo seguro que he experimentado y probado es que puede establecer los atributos de fuente en el código después de inflar la vista. Supongo que tiene una fuente en la carpeta de activos / fuentes que desea para usted.
Por ejemplo, en un fragmento:
Y en una actividad:
fuente
Tengo el mismo problema y es muy molesto.
Solo ocurre con el texto árabe.
Si hace la etiqueta de varias líneas y agrega un
\nal final de su cadena, lo solucionaría, pero el problema es que habría un gran espacio entre esta etiqueta y el objeto debajo de ella, debido al hecho de que este campo ahora tiene una nueva línea vacía debajo.Se puede hacer un control personalizado para evitar eso. Pero en general, este es un error molesto.
fuente
La mejor solución para esto es agregar una vista ficticia de la altura deseada (es decir, esto agregará relleno) en la parte inferior de la vista.
Como en mi caso, agregué una fila de tabla más en la parte inferior de la vista. Espero que esto pueda ayudar a alguien.
fuente
Sé que es muy tarde, pero esto es un trabajo maravilloso para mí. agregue este código a su
textviewfuente
Agregue relleno en la parte inferior de la vista de texto:
fuente
¡Finalmente lo arreglé!
Intento agregar String a TextView en Service y luego llamo scrollTo (), ¡la última línea se cortará!
El scrollTo () debe llamarse en "Ejecutable", como:
Lo creo porque en el dinero de la llamada scrollTo () en servicio, la actualización de TextView no está lista.
fuente