web-dev-qa-db-fra.com

Comment souligner un texte en Android XML?

Comment souligner un texte dans un fichier XML? Je ne trouve pas d’option dans textStyle.

86
Michael Zeuner

Si vous utilisez un fichier XML de ressource de chaîne (prend en charge les balises HTML), vous pouvez le faire à l'aide de <b> </b>, <i> </i> et <u> </u>.

<resources>
    <string name="your_string_here">
        This is an <u>underline</u>.
    </string>
</resources>

Si vous voulez souligner quelque chose dans le code, utilisez:

TextView tv = (TextView) view.findViewById(R.id.tv);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
tv.setText(content);

J'espère que cela t'aides

143
George Artemiou

Utilisez ceci:

TextView txt = (TextView) findViewById(R.id.Textview1);
txt.setPaintFlags(txt.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
51
abh22ishek
<resource>
    <string name="your_string_here">This is an <u>underline</u>.</string>
</resources>

Si ça ne marche pas alors 

<resource>
<string name="your_string_here">This is an &lt;u>underline&lt;/u>.</string>

Parce que "<" pourrait être un mot clé à un moment donné.

Et pour afficher

TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(getString(R.string.your_string_here)));
19
Bhavin

Tout d'abord, allez dans le fichier String.xml

vous pouvez ajouter tous les attributs HTML tels que, italique, gras ou souligné ici.

    <resource>
        <string name="your_string_here">This is an <u>underline</u>.</string>
    </resources>
3
Xar E Ahmer

Une autre façon de procéder consiste à créer un composant personnalisé prolongeant TextView. C'est utile dans les cas où vous devez avoir plusieurs TextViews soulignés.

Voici le code pour le composant:

package com.myapp.components;

import Android.content.Context;
import Android.support.v7.widget.AppCompatTextView;
import Android.text.SpannableString;
import Android.text.style.UnderlineSpan;
import Android.util.AttributeSet;

public class LinkTextView extends AppCompatTextView {
    public LinkTextView(Context context) {
        this(context, null);
    }

    public LinkTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        SpannableString content = new SpannableString(text);
        content.setSpan(new UnderlineSpan(), 0, content.length(), 0);

        super.setText(content, type);
    }
}

Et comment l'utiliser en XML:

<com.myapp.components.LinkTextView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:text="Hello World!" />
2
Tharkius

J'ai utilisé la méthode ci-dessous, c'est un travail pour moi. ci-dessous est un exemple pour Button, mais nous pouvons également utiliser TextView.

Button btnClickMe= (Button) findViewById(R.id.btn_click_me);
btnClickMe.setPaintFlags(btnClickMe.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
1

Vous pouvez utiliser le balisage ci-dessous, mais notez que si vous définissez textAllCaps sur true, l'effet de soulignement sera supprimé.

<resource>
    <string name="my_string_value">I am <u>underlined</u>.</string>
</resources>


Remarque

Utilisation de textAllCaps avec une chaîne (login_change_settings) contenant du balisage; le balisage sera abandonné par la conversion des majuscules 

La transformation de texte textAllCaps finira par appeler toString sur CharSequence, ce qui aura pour effet de supprimer tout balisage tel que. Cette vérification recherche les utilisations des chaînes contenant un balisage qui spécifie également textAllCaps = true. 

1
Tebo

Il existe différentes manières d'obtenir du texte souligné dans un Android TextView.

1 .<u>This is my underlined text</u> ou

I just want to underline <u>this</u> Word

2.Vous pouvez faire la même chose par programme.

`textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);`

3.Il peut être fait en créant un SpannableString et en le définissant comme propriété textView

SpannableString text = new SpannableString("Voglio sottolineare solo questa parola");
text.setSpan(new UnderlineSpan(), 25, 6, 0);
textView.setText(text);
0
Anandharaj R

Pour compléter la réponse de Bhavin. Par exemple, pour ajouter un soulignement ou une redirection. 

((TextView) findViewById(R.id.tv_cgu)).setText(Html.fromHtml(getString(R.string.upload_poi_CGU)));

<string name="upload_poi_CGU"><![CDATA[ J\'accepte les <a href="">conditions générales</a>]]></string>

et vous pouvez connaître la balise compatible ici: http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html

0
Anthone