Eu pesquisei minha pergunta, mas não há uma resposta funcional fornecida. Como adicionar uma lista com marcadores ao meu textview.
89
Difícil de fazer, pois ul / li / ol não são suportados. Felizmente, você pode usar isso como açúcar sintático:
• foo<br/>
• bar<br/>
• baz<br/>
•
é a entidade html para um marcador de lista, mais opções estão aqui http://www.elizabethcastro.com/html/extras/entities.html
mais sobre quais tags são compatíveis, fornecido por Mark Murphy (@CommonsWare) http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html Carregue isso com Html.fromHtml
((TextView)findViewById(R.id.my_text_view)).setText(Html.fromHtml(myHtmlString));
<string name="string_name"><![CDATA[ • foo<br /> • bar... ]]></string>
ul
/li
é suportado agora stackoverflow.com/questions/9754076/…browep explicou de forma agradável o caminho em relação ao HTML. A solução fornecida com a entidade html pode ser útil. Mas inclui apenas a bala. Se o seu texto quebrar, o recuo não ficará correto.
Encontrei outras soluções incorporando uma visualização da web. Isso pode ser apropriado para alguns, mas acho que é um tipo de exagero ... (O mesmo com o uso de uma exibição de lista.)
Gosto da abordagem criativa de Nelson : D, mas não dá a possibilidade de adicionar uma lista não ordenada a uma visualização de texto.
Meu exemplo de uma lista não ordenada com marcadores usando BulletSpan
Positivo:
Negativo:
fonte
Eu encontrei uma alternativa .. apenas copie este marcador "•" (é um texto) e cole no texto da sua visualização de texto, você pode mudar a cor do marcador mudando a cor do texto e também todos os outros atributos como tamanho, altura largura. .. :)
você pode usar o atalho para obter este marcador enquanto digita
para Windows
para mac
fonte
Inspirado pelas várias respostas aqui, criei uma classe Utilitário para tornar este um liner fácil . Isso criará uma lista com marcadores com recuo para texto quebrado. Ele tem métodos para combinar strings, recursos de string e recursos de array de string.
Ele criará um CharSequence que você pode passar para um TextView. Por exemplo:
Espero que seja útil. Aproveitar.
Nota: Isso usará o marcador padrão do sistema, um pequeno círculo da mesma cor do texto. Se você quiser um marcador personalizado, considere subclassificar BulletSpan e substituí-lo
drawLeadingMargin()
para desenhar o marcador que deseja. Dê uma olhada no código-fonte do BulletSpan para ter uma ideia de como ele funciona.fonte
Este é de longe o mais fácil ..
fonte
Extensão Kotlin pronta para usar
Uso:
Cores e tamanho:
Para alterar a cor ou o tamanho do marcador, use CustomBulletSpan em vez de BulletSpan
fonte
Uma opção que usei foi definir o drawable com marcadores usando um estilo.
Uso:
fonte
android:drawableLeft=
use TextView simples com um drawable composto. Por exemplo
fonte
Aqui está outra solução, não exatamente adicionar uma lista a um textview, mas acho que o objetivo é o mesmo. Ele usa o TableLayout, que só precisa de XML e é muito simples para pequenas listas ordenadas ou não ordenadas. Abaixo, um exemplo de código que usei para isso, não uma linha de código em Java.
Positivo:
Negativo:
cada item da lista é armazenado como um recurso de string separado
e o estilo:
fonte
Aqui está uma lista com marcadores com um cabeçalho e uma guia na frente de cada item.
fonte
Foi completamente exagero e fez uma visualização de texto personalizada.
Use-o assim:
e o código:
fonte
•
você teria que escolher outro símbolo fsymbols.com/signs/bullet-pointAcho que essa é a maneira mais fácil, deixe o textView como está no arquivo xml e use o seguinte código java. funcionou perfeitamente bem para mim.
fonte
A lista com marcadores pode ser criada simplesmente usando as tags
<ul>
e<li>
no recurso de string.NÃO USE setText (Html.fromHtml (string)) para definir a string no código! Basta definir a string normalmente em xml ou usando setText ( string ).
Por exemplo:
arquivo strings.xml
arquivo layout.xml
Isso produzirá o seguinte resultado:
As seguintes tags são suportadas assim (diretamente incorporadas ao recurso de string):
fonte
<ul>
\n<ul><li>a</li> \n<li>b</li> \n<li>c</li></ul>
Pois
single line text
você pode simplesmente usar drawables:draw_bullet_list.xml :
Você pode mudar
shape
,size
,color
com base em sua exigência.fonte
As duas opções que você tem para fazer uma lista com marcadores são
A opção 1 é a mais fácil.
fonte
outra maneira de suportar as tags HTML ausentes é substituindo-as bem, como mostrado aqui
fonte
Se você deseja criar uma lista de marcadores com a estrutura editText.
Eu me beneficiei dessas referências
Você pode usar estes marcadores
fonte