Как вы можете напечатать строку с нижним или верхним индексом? Можете ли вы сделать это без внешней библиотеки? Я хочу, чтобы это отображалось TextViewв Android.
Технически он не поддерживает HTML, то есть создает Spanned, который поддерживает TextView. По сути, CharSequences с информацией о стиле.
Дандре Эллисон
1
У меня это не работает ... но, возможно, это потому, что я установил его в своем файле strings.xml. Он подписывает его для меня, но он зажимает его, и независимо от того, сколько заполнения я кладу, он всегда обрезан.
JPM
Разве не безумно дорого разбирать этот HTML?
A. Steenbergen
12
Ссылка в ответе больше не актуальна.
Панг,
3
Спасибо за это, но ответ ниже с использованием SpannableStringBuilder намного лучше.
Это действительно выглядит правильно, спасибо, что поделились! Метод Html.fromHTML () удобен, но надстрочный индекс не меньше.
Daniel Schuler
Так лучше! Метод Html.fromHtml может привести к обрезанию текста надстрочного индекса.
Зак Сперске,
Когда я использую этот метод, я скажу, что 100 квадратных метров equation.setText(blah+cs);не работает. Хотя по отдельности работает нормально. Как получить эту работу?
Nobody
Гораздо лучше , чем Html.fromHtml () метод
scienticious
Пожалуйста, добавьте объяснение
Aryeetey Solomon Aryeetey
48
Ко всем, кто спрашивает, если вы хотите сделать его меньше, помимо создания супер или подстрочного индекса, вам просто нужно добавить тег. EX:
Привет, твой ответ был очень полезным. Однако какой код можно использовать для подстрочного индекса? И как называются эти коды, если их гуглить, это юникоды?
Это немного поздно, но следующие просто работают нормально, используйте верхний индекс как специальный символ, здесь я использовал пространственный символ.
Я новичок в переполнении стека, в то время не знаю, как использовать.
mvnkalyani
9
Принятый ответ сейчас устарел. Поэтому, пожалуйста, просмотрите этот фрагмент кода. Я получил это с какого-то сайта. Я забыл название, но в любом случае спасибо за этот хороший рабочий код.
SpannableString styledString
=newSpannableString("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(newRelativeSizeSpan(2f),0,5,0);// make text bold
styledString.setSpan(newStyleSpan(Typeface.BOLD),7,11,0);// underline text
styledString.setSpan(newUnderlineSpan(),13,23,0);// make text italic
styledString.setSpan(newStyleSpan(Typeface.ITALIC),25,31,0);
styledString.setSpan(newStrikethroughSpan(),33,46,0);// change text color
styledString.setSpan(newForegroundColorSpan(Color.GREEN),48,55,0);// highlight text
styledString.setSpan(newBackgroundColorSpan(Color.CYAN),57,68,0);// superscript
styledString.setSpan(newSuperscriptSpan(),72,83,0);// make the superscript text smaller
styledString.setSpan(newRelativeSizeSpan(0.5f),72,83,0);// subscript
styledString.setSpan(newSubscriptSpan(),87,96,0);// make the subscript text smaller
styledString.setSpan(newRelativeSizeSpan(0.5f),87,96,0);// url
styledString.setSpan(newURLSpan("http://www.google.com"),98,101,0);// clickable textClickableSpan clickableSpan =newClickableSpan(){@Overridepublicvoid 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.
HTML.fromHTML (String) устарел в API 24. Они говорят, что вместо этого нужно использовать этот, который поддерживает флаги в качестве параметра. Итак, чтобы уйти от принятого ответа:
Я нашел эту статью о том, как использовать Spannableили в файле строковых ресурсов: <sup>или <sub>для надстрочного и подстрочного индекса соответственно.
Ответы:
или
Общие задачи и как их выполнять на Android
источник
Пример:
источник
equation.setText(blah+cs);
не работает. Хотя по отдельности работает нормально. Как получить эту работу?Ко всем, кто спрашивает, если вы хотите сделать его меньше, помимо создания супер или подстрочного индекса, вам просто нужно добавить тег. EX:
источник
В коде просто введите "\ u00B2" Вот так:
textView.setText("X\u00B2");
источник
Если вы хотите установить надстрочный индекс из файла string.xml, попробуйте следующее:
строковый ресурс:
если вы хотите, чтобы верхний индекс был меньше:
Код:
источник
Это немного поздно, но следующие просто работают нормально, используйте верхний индекс как специальный символ, здесь я использовал пространственный символ.
источник
(или) Из файла строковых ресурсов:
источник
Принятый ответ сейчас устарел. Поэтому, пожалуйста, просмотрите этот фрагмент кода. Я получил это с какого-то сайта. Я забыл название, но в любом случае спасибо за этот хороший рабочий код.
Примечание: всегда помещайте
android:textAllCaps="false"
свой spantext.источник
HTML.fromHTML (String) устарел в API 24. Они говорят, что вместо этого нужно использовать этот, который поддерживает флаги в качестве параметра. Итак, чтобы уйти от принятого ответа:
И если вам нужен код, который также учитывает API до 24:
Этот ответ был получен из: https://stackoverflow.com/a/37905107/4998704
Флаги и другую документацию можно найти здесь: https://developer.android.com/reference/android/text/Html.html.
источник
Я нашел эту статью о том, как использовать
Spannable
или в файле строковых ресурсов:<sup>
или<sub>
для надстрочного и подстрочного индекса соответственно.источник
Надстрочный индекс и подстрочный индекс строкового ресурса Android для букв
Вам действительно не нужно использовать html-документ, если здесь представлена какая-либо из букв, которые вы хотите
Для "a" скопируйте и вставьте это "ᵃ"
Вы можете скопировать и вставить любой из этих надстрочных и подстрочных индексов прямо в свой строковый ресурс Android.
Пример:
Результат: торговая марка ᵀᴹ
Надстрочные и подстрочные буквы
Надстрочные капитал ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶⱽ ᵂ
Надстрочные мизер ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ
Подстрочный минускул ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₜ ᵤ ᵥ ₓ
источник
В
strings.xml
файлах вы можете просто использовать<sup>3</sup>
тег HTML . Отлично работает для меняПРИМЕР
источник
Они называются символами Unicode, и Android
TextView
их поддерживает. Скопируйте нужный суперсценарий / субскрипт из этой вики: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscriptsисточник
Х 2
источник