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:

<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.

  • Deshabilitar la "corrección ortográfica" en textView
  • Texto que no se muestra en la superposición de MapView
  • Aplicación para Android en Eclipse: Editar texto que no se muestra en la presentación gráfica
  • Animación simple de Android TextView
  • Android: ¿Dónde está escondido el atributo de color del texto del widget Spinner?
  • Texto de fondo de Android EditText
  • Android cómo dividir entre dos textview el ancho completo de pantalla exactamente cincuenta por ciento cincuenta?
  • Color del texto del cambio del androide de artículos en hilandero
  • 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.