web-dev-qa-db-fra.com

Indice et exposant une chaîne dans Android

Comment pouvez-vous imprimer une chaîne avec un indice ou un exposant? Pouvez-vous faire cela sans une bibliothèque externe? Je veux que cette affiche dans une TextView dans Android.

92
Mohit Deshpande
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));

ou

Tâches courantes et comment les utiliser sous Android

140
Konstantin Burov

Exemple:

equation = (TextView) findViewById(R.id.textView1);
SpannableStringBuilder cs = new SpannableStringBuilder("X3 + X2");
cs.setSpan(new SuperscriptSpan(), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
cs.setSpan(new RelativeSizeSpan(0.75f), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
cs.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
cs.setSpan(new RelativeSizeSpan(0.75f), 6, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
equation.setText(cs);
97
peter

Pour toutes les personnes qui demandent, si vous voulez le réduire, en plus de créer un super ou un indice, il vous suffit d'ajouter une balise. EX: 

"X <sup><small> 2 </small></sup>"
43
Ariel Capozzoli

C’est un peu tard, mais après avoir bien fonctionné, utilisez l’index comme caractère spécial, j’ai utilisé spacial char ici.

<string name="str">H₂</string>
9
CoDe

Si vous voulez définir le superscript à partir du fichier string.xml, essayez ceci:

ressource de chaîne:  

<string name="test_string">X&lt;sup&gt;3&lt;/sup&gt;</string>

si vous voulez que le suscrit soit plus petit:

<string name="test_string">X&lt;sup&gt;&lt;small&gt;3&lt;/small&gt;&lt;/sup&gt;</string>

Code:

textView.setText(Html.fromHtml("Anything you want to put here"+getString(R.string.test_string)));
9
César Cobo
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup><small>2</small></sup>")); 

(ou) À partir du fichier de ressources de chaîne:

<string name="test_string">
  <![CDATA[ X<sup><small>2</small></sup> ]]>
</string>
8
m.v.n.kalyani

La réponse acceptée est obsolète maintenant. Alors s'il vous plaît aller à travers ce morceau de code. Je l'ai eu de quelque site Web. J'ai oublié le nom mais de toute façon merci pour ce bon code de travail.

     SpannableString styledString
            = new SpannableString("Large\n\n"     // index 0 - 5
            + "Bold\n\n"          // index 7 - 11
            + "Underlined\n\n"    // index 13 - 23
            + "Italic\n\n"        // index 25 - 31
            + "Strikethrough\n\n" // index 33 - 46
            + "Colored\n\n"       // index 48 - 55
            + "Highlighted\n\n"   // index 57 - 68
            + "K Superscript\n\n" // "Superscript" index 72 - 83 
            + "K Subscript\n\n"   // "Subscript" index 87 - 96
            + "Url\n\n"           //  index 98 - 101
            + "Clickable\n\n");   // index 103 - 112

    // make the text twice as large
    styledString.setSpan(new RelativeSizeSpan(2f), 0, 5, 0);

    // make text bold
    styledString.setSpan(new StyleSpan(Typeface.BOLD), 7, 11, 0);

    // underline text
    styledString.setSpan(new UnderlineSpan(), 13, 23, 0);

    // make text italic
    styledString.setSpan(new StyleSpan(Typeface.ITALIC), 25, 31, 0);

    styledString.setSpan(new StrikethroughSpan(), 33, 46, 0);

    // change text color
    styledString.setSpan(new ForegroundColorSpan(Color.GREEN), 48, 55, 0);

    // highlight text
    styledString.setSpan(new BackgroundColorSpan(Color.CYAN), 57, 68, 0);

    // superscript
    styledString.setSpan(new SuperscriptSpan(), 72, 83, 0);
    // make the superscript text smaller
    styledString.setSpan(new RelativeSizeSpan(0.5f), 72, 83, 0);

    // subscript
    styledString.setSpan(new SubscriptSpan(), 87, 96, 0);
    // make the subscript text smaller
    styledString.setSpan(new RelativeSizeSpan(0.5f), 87, 96, 0);

    // url
    styledString.setSpan(new URLSpan("http://www.google.com"), 98, 101, 0);

    // clickable text
    ClickableSpan clickableSpan = new ClickableSpan() {

        @Override
        public void onClick(View widget) {
            // We display a Toast. You could do anything you want here.
            Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();

        }
    };

    styledString.setSpan(clickableSpan, 103, 112, 0);


    // Give the styled string to a TextView
    spantext = (TextView) findViewById(R.id.spantext);


    // this step is mandated for the url and clickable styles.
    spantext.setMovementMethod(LinkMovementMethod.getInstance());

    // make it neat
    spantext.setGravity(Gravity.CENTER);
    spantext.setBackgroundColor(Color.WHITE);

    spantext.setText(styledString);

Note: Mettez toujours Android:textAllCaps="false" de votre spantext.

7
AMAN SINGH

HTML.fromHTML (String) était obsolète à partir de l'API 24. On dit d'utiliser celui-ci à la place, qui supporte les indicateurs en tant que paramètre. Donc, pour sortir de la réponse acceptée:

TextView textView = ((TextView)findViewById(R.id.text));
textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY));

Et si vous voulez un code prenant en compte les API antérieures à la 24:

TextView textView = ((TextView)findViewById(R.id.text));
if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.N) {
  textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY));
} else {
    textView.setText(Html.fromHtml("X<sup>2</sup>"));    
}

Cette réponse provient de: https://stackoverflow.com/a/37905107/4998704

Les drapeaux et autres documents peuvent être trouvés ici: https://developer.Android.com/reference/Android/text/Html.html

4
Justin Liu

J'ai trouvé this article sur l'utilisation de Spannable ou dans un fichier de ressources de chaîne: <sup> ou <sub> pour exposant et indice, respectivement.

3
Mohit Deshpande

Ils s'appellent des caractères Unicode et Android TextView les prend en charge. Copiez le super/sous-script de votre wiki: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscripts

0
Aditya Naique

Dans les fichiers strings.xml, vous pouvez simplement utiliser la balise HTML <sup>3</sup>. Fonctionne parfaitement pour moi

EXEMPLE

<string name="turnoverRate">Turnover rate m<sup>3</sup>/m<sup>2</sup>/hour:</string>
0
Detilium