Androide: elipsis en el texto ICS continúa después de la elipsis
Tengo un textview que estoy programando el establecimiento de maxLines con y luego establecerlo en android: ellipsize = "end". Funciona parcialmente, pero por alguna razón el texto que se está truncando continúa para algunos caracteres después de los puntos suspensivos en 4.2.2. Es el texto real que se está truncando, no los nuevos caracteres.
También no funciona correctamente en 2.3.6 ya que añade una elipsis para cada sección con un salto de línea o "\ n".
- Gridview multilínea Vista de texto cortada
- ¿Cómo pasar el evento onClick a su padre en Android?
- La vista de texto de Android no se enrolla correctamente
- Android: establece la vista de texto al hacer clic en el elemento
- Cómo establecer programaticamente maxLength en Android TextView?
No estoy usando ningunas fuentes de encargo, he visto que ha causado problemas antes.
Aquí es donde puedo calcular y establecer los maxlines:
final TextView reviewView = (TextView) view.findViewById(R.id.textViewPosition3); ViewTreeObserver observer = reviewView.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int maxLines = (int) reviewView.getHeight() / reviewView.getLineHeight(); reviewView.setMaxLines(maxLines); reviewView.setEllipsize(TruncateAt.END); reviewView.getViewTreeObserver().removeGlobalOnLayoutListener(this); //reviewView.getViewTreeObserver().removeOnGlobalLayoutListener(this); } });
Aquí está mi xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragmentTestLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/restaurantImage" android:layout_width="match_parent" android:layout_height="wrap_content" android:adjustViewBounds="true" android:src="@drawable/test" android:layout_marginTop="-10dp" android:layout_marginRight="20dp" android:layout_marginLeft="20dp" /> <ImageView android:id="@+id/squareBlack" android:layout_alignRight="@id/restaurantImage" android:layout_alignTop="@id/restaurantImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/square_black_small" /> <TextView android:id="@+id/textViewPosition" android:layout_alignRight="@id/squareBlack" android:layout_alignLeft="@id/squareBlack" android:layout_alignBottom="@id/squareBlack" android:layout_alignTop="@id/squareBlack" android:layout_margin="1dp" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is a test" android:textSize="25sp" android:textColor="#a6cbff" android:textStyle="bold" /> <ImageView android:id="@+id/squareBlue" android:layout_toLeftOf="@id/squareBlack" android:layout_alignTop="@id/squareBlack" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/square_blue_small" /> <TextView android:id="@+id/textViewPosition1" android:layout_alignRight="@id/squareBlue" android:layout_alignLeft="@id/squareBlue" android:layout_alignBottom="@id/squareBlue" android:layout_alignTop="@id/squareBlue" android:layout_margin="1dp" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="7.5" android:textSize="25sp" android:textColor="#902515" android:textStyle="bold" /> <TextView android:id="@+id/restaurantName" android:layout_alignLeft="@id/restaurantImage" android:layout_alignBottom="@id/restaurantImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Restaurant Name" android:textSize="25sp" android:textColor="#fff" android:textStyle="bold" android:background="@drawable/greybar" /> <TextView android:id="@+id/textViewPosition2" android:layout_below="@id/restaurantImage" android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="February 15, 2013" android:textColor="#555" android:textStyle="bold" android:textSize="15sp" /> <Button android:id="@+id/readReview" android:background="@drawable/readreview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="Read the Review" android:textColor="#fff" android:textColorHighlight="#ccc" android:textSize="15sp" android:textStyle="bold" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/textViewPosition3" android:layout_below="@id/textViewPosition2" android:layout_above="@id/readReview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" android:textColorLink="#C90404" android:layout_marginRight="15dp" android:layout_marginLeft="15dp" android:textColor="#000" /> </RelativeLayout>
- Error al inflar la clase <unknown>
- Android 'InvocationTargetException' y 'UnsupportedOperationException'
- Cómo alinear TextView alrededor de un ImageView?
- Cómo capturar una excepción (ActivityNotFoundException) durante el uso de LinkMovementMethod
- Problema al usar una fuente personalizada - "no se puede hacer el tipo de letra nativo"
- Cómo hacer TextView del mismo tamaño sin importar los textos dentro
- Multiline TextView en Android?
- TextView - cómo hacer la segunda línea sangría
He resuelto esto programáticamente, pero no estoy seguro de que es la mejor solución, ya que se siente más de un hack. Parece estar trabajando sin embargo.
ViewTreeObserver observer = reviewView.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int maxLines = (int) reviewView.getHeight() / reviewView.getLineHeight(); reviewView.getViewTreeObserver().removeGlobalOnLayoutListener(this); if(reviewView.getLineCount() > maxLines) { int lineEndIndex = reviewView.getLayout().getLineEnd(maxLines - 1); String text = reviewView.getText().subSequence(0, lineEndIndex-3) +" ..."; reviewView.setText(text); } } });
Poner esto en xml
android:singleLine="true" android:ellipsize="end" android:maxLines="1"
- SDK para Android: ¿Cómo comprobar el facebook la tecla Hash?
- Obtenga las cookies de la vista web con ruta y fecha de caducidad