Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Listas ordenadas dentro de un Android TextView

Quiero mostrar una lista ordenada dentro de un TextView, por ejemplo:
1) punto 1
2) punto 2

Utilizando el siguiente diseño:

  • En la aplicación Unity android, cómo recibir contenido de un servicio de una biblioteca de android con referencia
  • Error: no se pudo encontrar el destino con la cadena de hash 'android-21'
  • Java.lang.ClassNotFoundException: android.os.AsyncTask causado por AdMob / Servicios de Google Play?
  • "La conexión a adb ha fallado y se ha producido un error grave".
  • WebView Android "tel:" enlaces muestran página web no encontrada
  • Uso de la barra de acción contextual con fragmentos
  • <TextView android:text="<ol><li>item 1\n</li><li>item 2\n</li></ol> /> 

    Yo obtengo:

    • Artículo 1
    • Tema 2

    ¿Cómo puedo cambiar las viñetas a números?

    Gracias.

  • Barra de herramientas alinear el título en el centro con el botón Atrás
  • Cambiar dinámicamente el diseño de fila de un ListView
  • ¿Hay alguna forma de notificaciones push en libGDX (proyectos Android e iOS)?
  • Android quita el fragmento y la vista de BackStack
  • API de la cámara PhoneGap para Android - Excepción no captada
  • Selección de un archivo de imagen de la Galería mediante FileProvider
  • 4 Solutions collect form web for “Listas ordenadas dentro de un Android TextView”

    Creo que tienes que hacer esto en código. Tuve que subclase LeadingMarginSpan para que esto funcione. Aquí es cómo lo hice.

     private class NumberIndentSpan implements LeadingMarginSpan { private final int gapWidth; private final int leadWidth; private final int index; public NumberIndentSpan(int leadGap, int gapWidth, int index) { this.leadWidth = leadGap; this.gapWidth = gapWidth; this.index = index; } public int getLeadingMargin(boolean first) { return leadWidth + gapWidth; } public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom, CharSequence text, int start, int end, boolean first, Layout l) { if (first) { Paint.Style orgStyle = p.getStyle(); p.setStyle(Paint.Style.FILL); float width = p.measureText("4."); c.drawText(index + ".", (leadWidth + x - width / 2) * dir, bottom - p.descent(), p); p.setStyle(orgStyle); } } } 

    Consigue tu opinión y úsala así:

     SpannableStringBuilder ssb = new SpannableStringBuilder(); for(String text : list) { int contentStart = content.length(); content.append(text); content.setSpan(new NumberIndentSpan(15, 15, number), contentStart, content.length(), 0); } TextView view = findViewById(R.id.....); view.setText(ssb); 

    Espero que esto ayude a otros buscando esto 🙂

    Puede utilizar esta manera en su lugar:

     &#8226; foo<br/> &#8226; bar<br/> &#8226; baz<br/> 

    Aquí hay una solución que uso. Puede copiarlo y pegarlo en una actividad para ver cómo funciona, pero debe cambiar todos los atributos con variables para la producción. Puede jugar con los parámetros de relleno para sangrarlo de acuerdo a sus necesidades. En lugar de dígitos, puede utilizar el marcador de caracteres si desea que la lista de viñetas.

     <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/bullet1" android:textStyle="bold" android:layout_width="30dp" android:gravity="right" android:layout_height="wrap_content" android:paddingRight="5dp" android:text="1" android:textSize="20dp" /> <TextView android:id="@+id/bullet1Text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="10dp" android:text="First bullet. First bullet. First bullet. First bullet. First bullet. First bullet. First bullet. First bullet. " android:textSize="15dp" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/bullet2" android:textStyle="bold" android:layout_width="30dp" android:gravity="right" android:layout_height="wrap_content" android:paddingRight="5dp" android:text="2" android:textSize="20dp" /> <TextView android:id="@+id/bullet2Text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="10dp" android:text="Second bullet. Second bullet. Second bullet. Second bullet. Second bullet. Second bullet. Second bullet. " android:textSize="15dp" /> </LinearLayout> 

    Podemos utilizar LeadingMarginSpan directamente

    por ejemplo

     String[] textArray = { "dfsdljjlfsdsdfjsdjldssdfidfsjdljasdfjfds\n", "sdfjdfjlkfdjdfkfjiwejojodljfldsjodsjfsdjdlf\n", "djsdfjsdffjdflljfjsadfdjfldfjl" }; SpannableStringBuilder content = new SpannableStringBuilder(); int number = 1; for (String t1 : textArray) { int contentStart = content.length(); String leadingString = number + ". "; content.append(leadingString); content.append(t1); int contentEnd = content.length(); content.setSpan( new LeadingMarginSpan.Standard(0, 66), contentStart, contentEnd, Spannable.SPAN_INCLUSIVE_EXCLUSIVE ); number++; } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.