In Android wird ein String tiefgestellt und hochgestellt


Antworten:


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

oder

Allgemeine Aufgaben und deren Ausführung in Android


3
Es unterstützt technisch gesehen kein HTML, dh es erstellt ein Spanned, das von TextViews unterstützt wird. Im Wesentlichen CharSequences mit Stilinformationen.
Dandre Allison

1
Das funktioniert bei mir nicht ... aber vielleicht liegt es daran, dass ich es in meiner Datei strings.xml festgelegt habe. Es abonniert es für mich, aber es schneidet es ab und egal wie viel Polsterung ich stecke, es ist immer abgeschnitten.
JPM

Ist das Parsen dieses HTML nicht wahnsinnig teuer?
A. Steenbergen

10
Der Link in der Antwort scheint nicht mehr relevant zu sein.
Pang

3
Vielen Dank dafür, aber die Antwort unten mit einem SpannableStringBuilder ist viel besser.
Zach Sperske

105

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

1
Das sieht tatsächlich richtig aus, danke fürs Teilen! Die Methode Html.fromHTML () ist praktisch, aber der hochgestellte Index ist nicht kleiner.
Daniel Schuler

Das ist viel besser! Die Methode Html.fromHtml kann dazu führen, dass der hochgestellte Text abgeschnitten wird.
Zach Sperske

Wenn ich diese Methode verwende, möchte ich sagen, dass 100 Quadratmeter equation.setText(blah+cs);nicht funktionieren. Funktioniert aber separat gut. Wie bekomme ich diese Arbeit?
Niemand

Weitaus besser als die Html.fromHtml () -Methode
wissenschaftlich

Bitte Erklärung hinzufügen
Aryeetey Solomon Aryeetey

48

Für alle Leute, die fragen, ob Sie es kleiner machen möchten, als Super oder Index zu machen, müssen Sie nur ein Tag hinzufügen. EX:

"X <sup><small> 2 </small></sup>"


11

Wenn Sie den hochgestellten Code aus der Datei string.xml festlegen möchten, versuchen Sie Folgendes:

Zeichenfolgenressource:

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

Wenn der hochgestellte Index kleiner sein soll:

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

11

Es ist etwas spät, aber nachdem es gut funktioniert hat, verwenden Sie hochgestellt als Sonderzeichen. Ich habe hier ein räumliches Zeichen verwendet.

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

10
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup><small>2</small></sup>")); 

(oder) Aus der String-Ressourcendatei:

<string name="test_string">
  <![CDATA[ X<sup><small>2</small></sup> ]]>
</string>

Ich bin neu, um über den Fluss zu stapeln, zu der Zeit weiß nicht, wie man verwendet.
mvnkalyani

8

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 Arbeitscode.

     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:android:textAllCaps="false" Geben Sie immer Ihren Spantext ein.


4

Die HTML.fromHTML (Zeichenfolge) war ab API 24 veraltet. Sie sagen, dass stattdessen diese verwendet werden soll, die Flags als Parameter unterstützt. Um von der akzeptierten Antwort abzuweichen:

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 Dokumentationen finden Sie hier: https://developer.android.com/reference/android/text/Html.html


3

Ich habe diesen Artikel über die Verwendung einer Spannableoder in einer String-Ressourcendatei gefunden: <sup>oder <sub>für hochgestellte bzw. tiefgestellte Zeichen.


6
Der Link in der Antwort scheint nicht mehr relevant zu sein.
Pang

0

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

BEISPIEL

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


0

Android String Resource Hochgestellt und Tiefgestellt für Buchstaben

Sie müssen kein HTML-Dokument verwenden, wenn einer der gewünschten Buchstaben hier dargestellt wird

Für "a" kopieren Sie dieses "ᵃ" und fügen Sie es ein.

Sie können diese hochgestellten und tiefgestellten Zeichen direkt in Ihre Android-String-Ressource kopieren und einfügen.

Beispiel:

    <string name="word_with_superscript" translatable="false">Trademark ᵀᴹ</string>

Ergebnis: Marke ᵀᴹ

Hochgestellte und tiefgestellte Buchstaben

Hochgestellte Hauptstadt ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶⱽ ᵂ

Hochgestellte Minuskel ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ

Subscript Minuskel ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.