Android에서 아래 첨자와 위 첨자 문자열


답변:


159
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));

또는

일반적인 작업 및 Android에서 수행하는 방법


3
기술적으로 HTML을 지원하지 않습니다. 즉, TextView가 지원하는 Spanned를 생성합니다. 본질적으로 스타일 정보가있는 CharSequences.
Dandre Allison 2012

1
이것은 나를 위해 작동하지 않지만 아마도 그 원인이 내 strings.xml 파일 안에 설정되어 있습니다. 그것은 나를 위해 그것을 첨자하지만 그것은 그것을 자르고 아무리 패딩을 넣어도 항상 잘립니다.
JPM

이 HTML을 파싱하는 것은 엄청나게 비싸지 않습니까?
A. Steenbergen 2014

10
답변의 링크가 더 이상 관련이없는 것 같습니다.
Pang

3
이것에 대해 감사하지만 SpannableStringBuilder를 사용하는 아래 답변이 훨씬 낫습니다.
Zach Sperske

105

예:

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

1
공유해 주셔서 감사합니다. Html.fromHTML () 메서드는 편리하지만 위 첨자는 작지 않습니다.
Daniel Schuler 2013

이게 훨씬 낫다! Html.fromHtml 메서드를 사용하면 위 첨자 텍스트가 잘릴 수 있습니다.
Zach Sperske

이 방법을 사용하면 100m2라고 말하는 것처럼 equation.setText(blah+cs);작동하지 않습니다. 그래도 별도로 잘 작동합니다. 그 일을하는 방법?
아무도

멀리보다 나은 Html.fromHtml () 방법
scienticious

설명 추가하세요
아리 티 솔로몬 아리 티

48

질문하는 모든 사람들에게 위 첨자 나 아래 첨자 외에 더 작게 만들고 싶다면 태그도 추가하면됩니다. 전의:

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

14

코드에서 다음과 같이 "\ u00B2"를 넣으십시오.

textView.setText("X\u00B2");


안녕하세요, 귀하의 답변은 매우 도움이되었습니다. 그러나 아래 첨자에는 어떤 코드를 사용할 수 있습니까? 또한 이러한 코드는 무엇을 Google에 표시해야합니까? 유니 코드입니까?
Kolaaa

안녕하세요, 예, 유니 코드입니다. 여기 PDF 엉 모든 유니 코드 unicode.org/charts/PDF/U2070.pdf
Gerardo Salazar Sánchez

감사. 아주 간단합니다.
Izak

11

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

11

조금 늦었지만 잘 작동하고 위 첨자를 특수 문자로 사용하고 여기에 공백 문자를 사용했습니다.

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

10
((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>

나는 그 당시 dnt가 사용하는 방법을 알고 있습니다.
mvnkalyani 2015

8

Accepted answer는 이제 더 이상 사용되지 않습니다. 그러니이 코드를 살펴보세요. 나는 일부 웹 사이트에서 이것을 얻었다. 이름을 잊었지만 어쨌든이 좋은 작업 코드에 감사드립니다.

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

참고 : 항상 android:textAllCaps="false"spantext를 입력 하십시오.


4

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

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

내가 발견 을 사용하는 방법에 대한 기사 Spannable: 또는 문자열 리소스 파일에서 <sup>또는 <sub>각각 첨자 및 아래 첨자에 대한합니다.


6
답변의 링크가 더 이상 관련이없는 것 같습니다.
Pang

0

에서 strings.xml파일, 당신은 단지 HTML을 사용할 수있는 <sup>3</sup>태그를. 나를 위해 완벽하게 작동

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


0

문자에 대한 Android 문자열 리소스 위 첨자 및 아래 첨자

원하는 문자가 여기에 표시되면 실제로 html 문서를 사용할 필요가 없습니다.

"a"의 경우 "ᵃ"를 복사하여 붙여 넣으십시오.

이러한 위첨자 및 아래 첨자를 Android 문자열 리소스에 직접 복사하여 붙여 넣을 수 있습니다.

예:

    <string name="word_with_superscript" translatable="false">Trademark ᵀᴹ</string>

결과 : 상표 ᵀᴹ

위첨자 및 아래 첨자

위첨자 대문자 ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ

위첨자 ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ

아래 첨자 ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₜ ᵤ ᵥ ₓ


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.