Je suis nouveau dans la programmation Android. Je développe une application simple. J'ai un bouton qui est transparent et a une icône et du texte. Je veux souligner le texte du bouton mais je n'ai pas été en mesure de le faire. Voici mon code xml:
<Button
Android:id="@+id/park"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:drawableLeft="@drawable/park"
Android:text="@string/button_name"
Android:background="#00000000"
Android:textColor="#000000"/>
Et le fichier de chaîne a:
<resources>
<string name="button_name"><u>parking areas</u></string>
</resources
Cette approche fonctionne en mode texte mais pas en bouton.
-toute suggestion?
Code uniquement
Java:
Button button = (Button) findViewById(R.id.park);
button.setPaintFlags(button.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Kotlin:
val button = findViewById<Button>(R.id.park);
button.paintFlags = button.paintFlags or Paint.UNDERLINE_TEXT_FLAG
Chaîne de ressources avec texte statique (xml uniquement)
Si vous avez un texte statique dans vos ressources, vous pouvez également utiliser l'approche suivante dans votre strings.xml
:
<string name="underlined_text"><u>I\'m underlined</u></string>
Chaîne de ressources avec texte dynamique (xml + code)
Si vous utilisez du texte dynamique mais que vous n'aimez pas la première approche (qui n'est pas non plus la meilleure imho), vous pouvez également utiliser ce qui suit:
strings.xml
<string name="underlined_dynamic_text"><u>%s</u></string>
Java:
button.setText(getString(R.string.underlined_dynamic_text, "I'm underlined");
Kotlin:
button.text = getString(R.string.underlined_dynamic_text, "I'm underlined")
Cela devrait rendre votre ButtonText bold, souligné et italique en même temps.
strings.xml
<resources>
<string name="register"><u><b><i>Copyright</i></b></u></string>
</resources>
Pour définir cette chaîne sur votre TextView, faites-le dans votre main.xml
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/btn1"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:text="@string/register" />
Vous ne pouvez pas définir de soulignement à partir d'un fichier xml. Pour définir le soulignement à l'aide de code, vous devez définir le drapeau de soulignement sur le bouton.
Button button = (Button) findViewById(R.id.park);
button.setPaintFlags(button.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Button button= (Button) findViewById(R.id.park);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
button.setText(content);
Utilisez ceci:
TextView txt=(TextView)findViewById(R.id.txt);
String styledText = "<u>parking areas</u>";
txt.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);