web-dev-qa-db-fra.com

Comment souligner le texte du bouton dans Android?

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?

30
user3303274

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")
63
finki

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" />
10
Mohammad Arman

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);
4
Amit Padekar
Button button= (Button) findViewById(R.id.park);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
button.setText(content);
3
sasikumar

Utilisez ceci:

TextView txt=(TextView)findViewById(R.id.txt);
        String styledText = "<u>parking areas</u>";
        txt.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);
3
Ketan