Comment imprimer une chaîne avec un indice ou un exposant? Pouvez-vous faire cela sans bibliothèque externe? Je veux que cela s'affiche dans un TextView
sous Android.
Comment imprimer une chaîne avec un indice ou un exposant? Pouvez-vous faire cela sans bibliothèque externe? Je veux que cela s'affiche dans un TextView
sous Android.
Réponses:
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));
ou
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);
equation.setText(blah+cs);
ne fonctionnent pas. Fonctionne bien séparément cependant. Comment faire ça?
À toutes les personnes qui le 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>"
Dans le code, mettez simplement ceci "\ u00B2" comme ceci:
textView.setText("X\u00B2");
Si vous souhaitez définir l'exposant à partir du fichier string.xml, essayez ceci:
ressource de chaîne:
<string name="test_string">X<sup>3</sup></string>
si vous voulez que l'exposant soit plus petit:
<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>"));
(ou) À partir du fichier de ressources de chaîne:
<string name="test_string">
<![CDATA[ X<sup><small>2</small></sup> ]]>
</string>
La réponse Acceptée est désormais obsolète. Alors s'il vous plaît, parcourez ce morceau de code. J'ai obtenu cela sur un site Web. J'ai oublié le nom mais de toute façon merci pour ce bon morceau de code fonctionnel.
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);
Remarque: mettez toujours android:textAllCaps="false"
votre spantext.
Le HTML.fromHTML (String) était obsolète à partir de l'API 24. Ils disent d'utiliser celui-ci à la place, qui prend en charge les indicateurs comme 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 qui prend également en compte les API antérieures à 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 est dérivée de: https://stackoverflow.com/a/37905107/4998704
Les indicateurs et autres documentations peuvent être trouvés ici: https://developer.android.com/reference/android/text/Html.html
Pour "a" copiez et collez ce "ᵃ"
Vous pouvez copier et coller l'un de ces exposants et indices directement dans votre ressource de chaîne Android.
Exemple:
<string name="word_with_superscript" translatable="false">Trademark ᵀᴹ</string>
Résultat: marque déposée ᵀᴹ
Lettres en exposant et en indice
Majuscule en exposant ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ
Exposant minuscule ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ
Indice minuscule ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₜ ᵤ ᵥ ₓ
Ils sont appelés caractères Unicode et Android les TextView
prend en charge. Copiez le super / sous-script que vous voulez depuis ce 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