Come puoi stampare una stringa con un pedice o un apice? Puoi farlo senza una libreria esterna? Voglio che questo venga visualizzato in un TextView
in Android.
Come puoi stampare una stringa con un pedice o un apice? Puoi farlo senza una libreria esterna? Voglio che questo venga visualizzato in un TextView
in Android.
Risposte:
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));
o
Esempio:
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);
non funziona. Funziona bene separatamente però. Come ottenere quel lavoro?
A tutte le persone che chiedono, se vuoi renderlo più piccolo oltre a fare super o pedice, devi solo aggiungere anche il tag. EX:
"X <sup><small> 2 </small></sup>"
Nel codice basta inserire "\ u00B2" in questo modo:
textView.setText("X\u00B2");
Se vuoi impostare l'apice dal file string.xml prova questo:
risorsa stringa:
<string name="test_string">X<sup>3</sup></string>
se vuoi che l'apice sia più piccolo:
<string name="test_string">X<sup><small>3</small></sup></string>
Codice:
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>"));
(o) Dal file di risorse della stringa:
<string name="test_string">
<![CDATA[ X<sup><small>2</small></sup> ]]>
</string>
La risposta accettata è ora deprecata. Quindi per favore leggi questo pezzo di codice. L'ho preso da qualche sito web. Ho dimenticato il nome ma comunque grazie per questo bel pezzo di codice funzionante.
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);
Nota: mettete sempre android:textAllCaps="false"
del vostro spantext.
HTML.fromHTML (String) è stato deprecato a partire dall'API 24. Dicono di usare questo invece, che supporta i flag come parametro. Quindi, per uscire dalla risposta accettata:
TextView textView = ((TextView)findViewById(R.id.text));
textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY));
E se vuoi un codice che consideri anche le API pre-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>"));
}
Questa risposta è stata derivata da: https://stackoverflow.com/a/37905107/4998704
I flag e altra documentazione possono essere trovati qui: https://developer.android.com/reference/android/text/Html.html
Per "a" copia e incolla questo "ᵃ"
Puoi copiare e incollare uno qualsiasi di questi apici e pedici direttamente nella tua risorsa stringa Android.
Esempio:
<string name="word_with_superscript" translatable="false">Trademark ᵀᴹ</string>
Risultato: marchio ᵀᴹ
Lettere in apice e pedice
Capitale in apice ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ
Minuscolo in apice ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ
Pedice minuscolo ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ
Si chiamano caratteri Unicode e Android TextView
li supporta. Copia il super / sub-script che desideri da questo Wiki: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscripts
yourTextView.setText(Html.fromHtml("X<sup>2</sup>"));
This will be the result in you yourTextView =
X 2