Wie können Sie eine Zeichenfolge mit einem tiefgestellten oder hochgestellten Index drucken? Können Sie dies ohne eine externe Bibliothek tun? Ich möchte, dass dies in einem TextView
in Android angezeigt wird .
Wie können Sie eine Zeichenfolge mit einem tiefgestellten oder hochgestellten Index drucken? Können Sie dies ohne eine externe Bibliothek tun? Ich möchte, dass dies in einem TextView
in Android angezeigt wird .
Antworten:
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));
oder
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);
equation.setText(blah+cs);
nicht funktionieren. Funktioniert aber separat gut. Wie bekomme ich diese Arbeit?
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>"
In den Code setzen Sie einfach dieses "\ u00B2" wie folgt:
textView.setText("X\u00B2");
Wenn Sie den hochgestellten Code aus der Datei string.xml festlegen möchten, versuchen Sie Folgendes:
Zeichenfolgenressource:
<string name="test_string">X<sup>3</sup></string>
Wenn der hochgestellte Index kleiner sein soll:
<string name="test_string">X<sup><small>3</small></sup></string>
Code:
textView.setText(Html.fromHtml("Anything you want to put here"+getString(R.string.test_string)));
((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>
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.
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
Sie werden als Unicode-Zeichen bezeichnet und werden von Android TextView
unterstützt. Kopieren Sie das gewünschte Super- / Subskript aus diesem Wiki: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscripts
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 ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ
yourTextView.setText(Html.fromHtml("X<sup>2</sup>"));
This will be the result in you yourTextView =
X 2