A ListView
dans mon application comporte de nombreux éléments de chaîne comme name
, experience
, date of joining
, etc. Je veux juste faire name
gras. Tous les éléments de chaîne seront dans un seul TextView
.
mon XML:
<ImageView
android:id="@+id/logo"
android:layout_width="55dp"
android:layout_height="55dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="15dp" >
</ImageView>
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/logo"
android:padding="5dp"
android:textSize="12dp" >
</TextView>
Mon code pour définir le TextView de l'élément ListView:
holder.text.setText(name + "\n" + expirience + " " + dateOfJoininf);
android
android-listview
Mouche domestique
la source
la source
Réponses:
Dites que vous avez un
TextView
appeléetx
. Vous utiliseriez alors le code suivant:la source
var bss = new StyleSpan(Android.Graphics.TypefaceStyle.Bold);
etx.TextFormatted = sb;
Sur la base de la réponse d'Imran Rana, voici une méthode générique et réutilisable si vous devez appliquer
StyleSpan
s à plusieursTextView
s, avec prise en charge de plusieurs langues (où les indices sont variables):Utilisez-le de
Activity
manière similaire:strings.xml
Résultat:
Bienvenue sur CompanyName
la source
Les réponses fournies ici sont correctes, mais ne peuvent pas être appelées dans une boucle car l'
StyleSpan
objet est une seule étendue contiguë (pas un style qui peut être appliqué à plusieurs travées). AppelersetSpan
plusieurs fois avec le même grasStyleSpan
créerait une plage en gras et la déplacerait simplement dans la plage parent.Dans mon cas (affichage des résultats de recherche), je devais mettre en gras toutes les instances de tous les mots-clés de recherche. C'est ce que j'ai fait:
Gardez à l'esprit que le code ci-dessus n'est pas assez intelligent pour ignorer les doubles caractères gras si un mot clé est une sous-chaîne de l'autre. Par exemple, si vous recherchez "Fish fi" dans "Fishes in the fisty Sea", cela rendra le "poisson" en gras une fois, puis la partie "fi" . La bonne chose est que bien qu'il soit inefficace et un peu indésirable, il n'aura pas d'inconvénient visuel car votre résultat affiché ressemblera toujours à
Poisson es dans la fi mer sty
la source
Vous pouvez le faire en utilisant Kotlin et la
buildSpannedString
fonction d'extension decore-ktx
la source
si vous ne connaissez pas exactement la longueur du texte avant la partie de texte que vous souhaitez mettre en gras, ou même si vous ne connaissez pas la longueur du texte à mettre en gras, vous pouvez facilement utiliser des balises HTML comme les suivantes:
la source
Extension de la réponse de frieder pour soutenir l'insensibilité des cas et des signes diacritiques.
la source
Si vous utilisez l'annotation @ srings / your_string, accédez au fichier strings.xml et utilisez la
<b></b>
balise dans la partie du texte souhaitée.Exemple:
la source
Je recommande d'utiliser le fichier strings.xml avec CDATA
Puis dans le fichier java:
la source