Je me demandais s'il existe un moyen simple de supprimer du texte dans un widget d'application sous Android. Dans une activité normale, c'est assez simple, en utilisant des indicateurs textview:
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
Mais comme dans un widget app, je ne peux utiliser que des téléspectateurs ... je ne sais pas si c'est possible
Quelqu'un sait quelque chose à ce sujet?
Merci!
android
widget
textview
strikethrough
Antonio
la source
la source
xml-only
solution comme moi: stackoverflow.com/a/49062515/3579786Réponses:
Vous pouvez utiliser ceci:
Bien sûr, vous pouvez également ajouter d'autres indicateurs de la classe android.graphics.Paint.
la source
Pour le faire par programme dans une vue de texte, non testée dans d'autres vues >>
la source
Une autre façon de le faire par programmation qui ressemble un peu moins à un hack qu'à Paint:
Au lieu de faire:
faire:
la source
RemoteView
Mise à jour 2015: Mes amis, c'est pour les très anciennes versions d'Android. Voir d'autres réponses pour des solutions modernes!
Pour parcourir l'ensemble de la vue du texte, vous pouvez utiliser une image d'arrière-plan spécifique pour simuler l'effet barré:
Où le
bg_strikethrough
dessinable est un patch 9 qui garde une ligne continue au milieu, poussant de chaque côté, avec autant de rembourrage que vous pensez raisonnable. J'en ai utilisé un comme celui-ci:(agrandi pour plus de clarté .. 1300%!)
C'est ma version HDPI, alors enregistrez-la (la première http://i.stack.imgur.com/nt6BK.png ) car
res/drawable-hdpi/bg_strikethrough.9.png
et la configuration fonctionnera comme suit:la source
Pour ce faire, vous pouvez utiliser ceci
et pour supprimer, vous pouvez utiliser ceci
la source
Si vous avez un seul mot, nous pouvons utiliser drawable. Voici l'exemple:
si vous avez plusieurs lignes, vous pouvez utiliser le code suivant:
la source
Voici une extension pour tous les amis de Kotlin
Usage
Limitation
Les barrés ne peuvent avoir que la même couleur que le texte
(c'est-à-dire que le texte rouge et le barré bleu ne sont pas possibles)
la source
Pour TextView multiligne, vous devez utiliser android.text.style.CharacterStyle comme ceci:
la source
C'est vraiment simple si vous utilisez des chaînes:
Et puis juste:
la source
Ajoutez la ligne ci-dessous: -
utilisez votre référence au lieu de "tv"
la source
essayez ce code
la source
Pour Lollipop et plus. créer un dessin
et utilisez-le comme premier plan.
android:foreground="@drawable/strike_through"
la source
vous ajoutez:
vous définissez / ajoutez votre variable:
puis ajoutez .setPaintFlags dans variableTv:
la source
J'ai essayé quelques options, mais cela fonctionne mieux pour moi:
à votre santé
la source
Les ressources Android ont une assez bonne prise en charge du balisage HTML
Les éléments HTML ci-dessous sont pris en charge:
Notez cependant qu'il n'est pas rendu dans l'aperçu des mises en page du studio Android. Dernier test sur Android Studio 3.3.1
Par exemple, le barré ressemblera à ceci:
la source
J'ai fait cela sur un régulier (local)
TextView
, et cela devrait fonctionner sur la variété distante puisque la documentation répertorie la méthode comme équivalente entre les deux:remote_text_view.setText(Html.fromHtml("This is <del>crossed off</del>."));
la source
<del>
ne soit pas pris en charge parHtml.fromHtml()
. Avez-vous essayé<strike>
ou<s>
?Je sais, je réponds à une vieille question, cela pourrait être utile pour quelqu'un d'autre, pour supprimer une partie particulière de TextView par programme.
Ainsi, dans cet exemple de code, 5 est la position de départ et 8 est la position de fin du texte qui doit être rayé, donc après avoir exécuté ce code, nous pouvons obtenir le texte "besoin" avec barré. J'espère que cela sera utile pour quelqu'un d'autre.
la source