/ / Підрядковий і надстроковий рядки в Android - java, android, string, superscript, subscript

Підрядковий і надстроковий рядки в Android - java, android, string, superscript, індекс

Як можна надрукувати рядок з індексом або індексом? Чи можете ви це зробити без зовнішньої бібліотеки? Я хочу, щоб це відображалося в TextView в Android.

Відповіді:

135 за відповідь № 1
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));

або

Загальні завдання та способи їх виконання в Android


92 для відповіді № 2

Приклад:

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

40 для відповіді № 3

Для всіх, хто запитує, якщо ви хочете зробити його меншим, окрім створення супер або індексу, вам також потрібно додати тег. EX:

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

8 для відповіді № 4

Якщо ви хочете встановити верхній індекс з файлу string.xml, спробуйте це:

ресурсний рядок:

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

якщо ви хочете, щоб верхній індекс був меншим:

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

Код:

textView.setText(Html.fromHtml("Anything you want to put here"+getString(R.string.test_string)));

8 за відповідь № 5

Це трохи пізно, але після просто працювати нормально, використовувати надпис у якості спеціального символу, я використовував просторові Char тут.

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

6 за відповіддю № 6
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup><small>2</small></sup>"));

(або) з файлу ресурсів рядка:

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

5 за відповідь № 7

У коді просто покладіть цю "u00B2" Як це:

textView.setText("Xu00B2");


3 для відповіді № 8

я знайшов це стаття про те, як використовувати a Spannable або у файлі рядкового ресурсу: <sup> або <sub> для верхнього і нижнього індексів, відповідно.


3 для відповіді № 9

HTML.fromHTML (String) застаріли з API 24. Вони кажуть, що замість цього використовують цей, який підтримує прапори як параметр. Отже, щоб уникнути прийнятої відповіді:

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

І якщо ви хочете, щоб код, який враховує pre-24 API, також:

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

Ця відповідь була отримана з: https://stackoverflow.com/a/37905107/4998704

Прапори та іншу документацію можна знайти тут: https://developer.android.com/reference/android/text/Html.html


3 для відповіді № 10

Відповідь "Прийнята" зараз застаріла. Тому, будь ласка, перегляньте цей фрагмент коду. Я отримав це з деяких веб-сайтів. Я забув ім'я, але в будь-якому випадку спасибі за цей гарний шматок робочого коду.

     SpannableString styledString
= new SpannableString("Largenn"     // index 0 - 5
+ "Boldnn"          // index 7 - 11
+ "Underlinednn"    // index 13 - 23
+ "Italicnn"        // index 25 - 31
+ "Strikethroughnn" // index 33 - 46
+ "Colorednn"       // index 48 - 55
+ "Highlightednn"   // index 57 - 68
+ "K Superscriptnn" // "Superscript" index 72 - 83
+ "K Subscriptnn"   // "Subscript" index 87 - 96
+ "Urlnn"           //  index 98 - 101
+ "Clickablenn");   // 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);

Примітка : Завжди кладіть android:textAllCaps="false" вашого spantext.


0 для відповіді № 11

Їх називають символами Unicode і Android TextView підтримує їх. Скопіюйте потрібний сценарій super / sub-script з цієї вікі: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscripts


0 для відповіді № 12

Для XML файл, як і в strings.xml:

<string name="main_step1">1<sup><small>st</small></sup></string>

Додати потрібний тег.


-1 за відповідь № 13

В strings.xml файлів можна просто використовувати HTML <sup>3</sup> . Працюйте ідеально для мене

ПРИКЛАД

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

-1 за відповідь № 14
yourTextView.setText(Html.fromHtml("X<sup>2</sup>"));

This will be the result in you yourTextView =

X2