it-swarm.com.de

Tief- und Hochgestellt einen String in Android

Wie können Sie eine Zeichenfolge mit einem Index oder Hochstellen drucken? Können Sie dies ohne externe Bibliothek tun? Ich möchte, dass dies in einer TextView in Android angezeigt wird.

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

oder

Häufige Aufgaben und Vorgehensweisen in Android

140

Beispiel:

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

Für alle, die fragen, ob Sie sie neben der Erstellung von Super- oder Subskriptionen verkleinern möchten, müssen Sie lediglich ein Tag hinzufügen. EX: 

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

In den Code stelle einfach dieses "\ u00B2" so ein:

textView.setText("X\u00B2");

Es ist ein bisschen spät, aber nach der Arbeit gut, verwenden Sie hochgestellt als Sonderzeichen.

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

Wenn Sie den Superskript aus der Datei string.xml setzen möchten, versuchen Sie Folgendes:

String-Ressource:  

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

wenn Sie möchten, dass der hochgestellte Index kleiner ist:

<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>")); 

(oder) aus String-Ressourcendatei:

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

Die akzeptierte Antwort ist jetzt veraltet. Bitte gehen Sie diesen Code durch. Ich habe das von einer Website bekommen. Ich habe den Namen vergessen, aber trotzdem danke für diesen guten Code.

     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);

Hinweis: Setzen Sie immer Android:textAllCaps="false" Ihres Spantextes.

7
AMAN SINGH

Die HTML.fromHTML (String) wurde ab API 24 nicht mehr unterstützt. Sie sagen, stattdessen diese zu verwenden, die Flags als Parameter unterstützt. Um von der akzeptierten Antwort abzusehen:

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

Und wenn Sie Code wünschen, der auch APIs vor 24 berücksichtigt:

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>"));    
}

Diese Antwort wurde abgeleitet von: https://stackoverflow.com/a/37905107/4998704

Die Flags und andere Dokumentation finden Sie hier: https://developer.Android.com/reference/Android/text/Html.html

4
Justin Liu

Ich habe this Artikel über die Verwendung einer Spannable oder einer String-Ressourcendatei gefunden: <sup> oder <sub> für Hoch- bzw. Tiefstellung.

3
Mohit Deshpande

Sie werden Unicode-Zeichen genannt und werden von Android TextView unterstützt. Kopieren Sie das gewünschte Super-/Sub-Skript aus diesem Wiki: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_und_Subscripts

0
Aditya Naique

In den strings.xml-Dateien können Sie einfach das HTML-Tag <sup>3</sup> verwenden. Arbeite perfekt für mich

BEISPIEL

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