Indeks dolny i indeks górny a String w systemie Android
104
Jak możesz wydrukować ciąg z indeksem dolnym lub górnym? Czy możesz to zrobić bez zewnętrznej biblioteki? Chcę, aby to wyświetlało się TextVieww systemie Android.
Technicznie nie obsługuje HTML, to znaczy tworzy Spanned, który obsługuje TextViews. Zasadniczo CharSequences z informacjami o stylu.
Dandre Allison
1
To nie działa dla mnie ... ale może to dlatego, że umieściłem go w moim pliku strings.xml. Indeksuje go dla mnie, ale przycina go i bez względu na to, ile wyściółki włożyłem, zawsze jest przycięty.
JPM
Czy parsowanie tego kodu HTML nie jest szalenie drogie?
A. Steenbergen
11
Link w odpowiedzi nie wydaje się już trafny.
Pang
3
Dzięki za to, ale odpowiedź poniżej przy użyciu SpannableStringBuilder jest znacznie lepsza.
To faktycznie wygląda dobrze, dzięki za udostępnienie! Metoda Html.fromHTML () jest wygodna, ale indeks górny nie jest mniejszy.
Daniel Schuler,
To jest o wiele lepsze! Metoda Html.fromHtml może prowadzić do obcięcia tekstu w indeksie górnym.
Zach Sperske,
Kiedy używam tej metody, mówię, że 100 metrów kwadratowych, equation.setText(blah+cs);to nie działa. Jednak działa dobrze osobno. Jak uzyskać taką pracę?
Nikt
Znacznie lepiej niż Html.fromHtml () metoda
scienticious
Proszę dodać wyjaśnienie
Aryeetey Solomon Aryeetey
48
Do wszystkich osób pytających, czy chcesz go zmniejszyć oprócz tworzenia super lub indeksu dolnego, musisz również dodać tag. DAWNY:
Cześć, Twoja odpowiedź była bardzo pomocna. Jednak jakiego kodu można użyć dla indeksu dolnego? Jak nazywają się te kody, jeśli mam je wygooglować, czy są to Unicodes?
Jestem nowy w stosie nad przepływem, w tym czasie nie wiem, jak używać.
mvnkalyani
8
Zaakceptowana odpowiedź jest teraz przestarzała. Więc proszę, przejrzyj ten fragment kodu. Mam to z jakiejś strony internetowej. Zapomniałem nazwy, ale mimo wszystko dzięki za ten dobry fragment działającego kodu.
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);
Uwaga: zawsze umieszczaj android:textAllCaps="false"swój spantext.
HTML.fromHTML (String) został uznany za przestarzały w API 24. Mówią, że zamiast tego używać tego, który obsługuje flagi jako parametr. Aby wyjść z zaakceptowanej odpowiedzi:
Odpowiedzi:
lub
Typowe zadania i sposoby ich wykonywania w systemie Android
źródło
Przykład:
źródło
equation.setText(blah+cs);
to nie działa. Jednak działa dobrze osobno. Jak uzyskać taką pracę?Do wszystkich osób pytających, czy chcesz go zmniejszyć oprócz tworzenia super lub indeksu dolnego, musisz również dodać tag. DAWNY:
źródło
W kodzie po prostu umieść to „\ u00B2” w ten sposób:
textView.setText("X\u00B2");
źródło
Jeśli chcesz ustawić indeks górny z pliku string.xml, spróbuj tego:
zasób ciągu:
jeśli chcesz, aby indeks górny był mniejszy:
Kod:
źródło
Trochę późno, ale po prostu działa dobrze, użyj indeksu górnego jako znaku specjalnego, użyłem tutaj znaku przestrzennego.
źródło
(lub) Z pliku zasobów ciągu:
źródło
Zaakceptowana odpowiedź jest teraz przestarzała. Więc proszę, przejrzyj ten fragment kodu. Mam to z jakiejś strony internetowej. Zapomniałem nazwy, ale mimo wszystko dzięki za ten dobry fragment działającego kodu.
Uwaga: zawsze umieszczaj
android:textAllCaps="false"
swój spantext.źródło
HTML.fromHTML (String) został uznany za przestarzały w API 24. Mówią, że zamiast tego używać tego, który obsługuje flagi jako parametr. Aby wyjść z zaakceptowanej odpowiedzi:
A jeśli potrzebujesz kodu uwzględniającego również interfejsy API starsze niż 24:
Ta odpowiedź pochodzi z: https://stackoverflow.com/a/37905107/4998704
Flagi i inną dokumentację można znaleźć tutaj: https://developer.android.com/reference/android/text/Html.html
źródło
Znalazłem ten artykuł o tym, jak używać
Spannable
lub w pliku zasobów ciągu:<sup>
lub odpowiednio<sub>
dla indeksu górnego i dolnego.źródło
Indeks górny i dolny zasobów ciągu systemu Android dla liter
Naprawdę nie musisz używać dokumentu HTML, jeśli któraś z żądanych liter jest tutaj reprezentowana
W przypadku „a” skopiuj i wklej ten „ᵃ”
Możesz skopiować i wkleić dowolny z tych indeksów górnych i dolnych bezpośrednio do zasobu ciągu Android.
Przykład:
Wynik: znak towarowy ᵀᴹ
Litery w indeksie górnym i dolnym
Górny kapitał ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶⱽ ᵂ
Górny nikła ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ
Indeks nikła ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ
źródło
W
strings.xml
plikach możesz po prostu użyć<sup>3</sup>
tagu HTML . U mnie działa idealniePRZYKŁAD
źródło
Nazywa się je znakami Unicode, a Android
TextView
je obsługuje. Skopiuj żądany super / podskrypt z tej Wiki: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscriptsźródło
X 2
źródło