Fiquei me perguntando se existe uma maneira fácil de localizar texto dentro de um widget de aplicativo no Android. Em uma atividade normal, é bastante fácil usar sinalizadores de texto:
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
Mas como em um widget de aplicativo, posso usar apenas remoteviews ... Não sei se isso é possível
Alguém sabe alguma coisa sobre isso?
Obrigado!
android
widget
textview
strikethrough
Antonio
fonte
fonte
xml-only
solução como a minha: stackoverflow.com/a/49062515/3579786 #Respostas:
Você pode usar isto:
Claro que você também pode adicionar outros sinalizadores da classe android.graphics.Paint.
fonte
Para fazer isso de forma programática em uma visualização de texto, não testada em outras visualizações >>
fonte
Outra maneira de fazer isso de forma programática, que se parece menos com um hack do que com o Paint:
Em vez de fazer:
Faz:
fonte
RemoteView
Atualização de 2015: Pessoal, isso é para versões muito antigas do Android. Veja outras respostas para soluções modernas!
Para percorrer toda a exibição de texto, você pode usar uma imagem de plano de fundo específica para simular o efeito tachado:
Onde o
bg_strikethrough
drawable é um patch de 9 que mantém uma linha sólida no meio, crescendo de ambos os lados, com o máximo de preenchimento que você acha razoável. Eu usei um como este:(ampliado para maior clareza .. 1300%!)
Essa é a minha versão do HDPI, então salve-a (a primeira http://i.stack.imgur.com/nt6BK.png )
res/drawable-hdpi/bg_strikethrough.9.png
e a configuração funcionará da seguinte forma:fonte
Para fazer isso, você pode usar este
e para remover você pode usar isso
fonte
Se você tiver uma única palavra, podemos usar drawable. A seguir está o exemplo:
se você tiver várias linhas, poderá usar o seguinte código:
fonte
Aqui está uma extensão para todos vocês, pessoal da Kotlin
Uso
Limitação
Tachas só podem ter a mesma cor que o texto
(isto é, texto em vermelho e rasurado em azul não é possível)
fonte
Para TextView com várias linhas, você deve usar android.text.style.CharacterStyle assim:
fonte
É realmente fácil se você estiver usando strings:
E então apenas:
fonte
Adicione a linha abaixo: -
use sua referência em vez de "tv"
fonte
tente este código
fonte
Para pirulito e acima. criar um drawable
e use-o como primeiro plano.
android:foreground="@drawable/strike_through"
fonte
você adiciona:
você define / adiciona na sua variável:
e adicione .setPaintFlags em variableTv:
fonte
Eu tentei algumas opções, mas isso funciona melhor para mim:
Felicidades
fonte
Os recursos do Android têm um ótimo suporte à marcação HTML
Os elementos HTML abaixo são suportados:
Observe, no entanto, que ele não é renderizado na pré-visualização de layouts do Android Studio. Último teste no Android Studio 3.3.1
Por exemplo, o tachado será assim:
fonte
Eu fiz isso regularmente (local)
TextView
e deve funcionar na variedade remota, pois os documentos listam o método como equivalente entre os dois:remote_text_view.setText(Html.fromHtml("This is <del>crossed off</del>."));
fonte
<del>
não seja suportado porHtml.fromHtml()
. Você já tentou<strike>
ou<s>
?Sei que estou respondendo a uma pergunta antiga, pode ser útil para outra pessoa, por eliminar uma parte específica do TextView programaticamente.
Portanto, neste código de exemplo, 5 é a posição inicial e 8 é a posição final do texto que precisam ser eliminadas; portanto, após a execução desse código, podemos obter o texto "necessitado" com eliminado. Espero que seja útil para outra pessoa.
fonte