Androidでの文字列の下付き文字と上付き文字


104

下付きまたは上付きの文字列をどのように印刷できますか?外部ライブラリなしでこれを行うことができますか?これをTextViewAndroidで表示したい。


リストビューとそのテキストビューで[this] [1]トリックを使用します。[1]:stackoverflow.com/a/22105902/1350021
Omid Omidi 14

回答:


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
回答のリンクはもう関連性がないようです。
2016

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

これはずっと良いです!Html.fromHtmlメソッドは、上付きテキストが切り捨てられる可能性があります。
Zach Sperske

この方法を使用すると、100メートル四方equation.setText(blah+cs);というのは機能しません。ただし、個別に問題なく動作します。その仕事を得るには?
誰も

Html.fromHtml()メソッドよりもはるかに優れている
科学的に優れた

説明を追加してください
Aryeetey Solomon Aryeetey

48

求めるすべての人にとって、上付きまたは下付き以外に小さくしたい場合は、タグも追加する必要があります。例:

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

14

コードでは、この "\ u00B2"を次のように記述します。

textView.setText("X\u00B2");


こんにちは、あなたの答えはとても役に立ちました。ただし、添え字にはどのコードを使用できますか?また、これらをグーグルする場合、これらのコードは何と呼ばれますか?それらはユニコードですか?
Kolaaa

こんにちは、はい、これはユニコードです。ここでは、すべてのユニコードを含む
Gerardo

ありがとう。とても簡単です。
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

承認済みの回答は現在廃止されています。したがって、このコードの一部を実行してください。これはいくつかのウェブサイトから入手しました。名前を忘れてしまいましたが、とにかくこの作業コードの良い部分に感謝します。

     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"スパンテキストを入れてください。


4

HTML.fromHTML(String)はAPI 24で非推奨になりました。フラグをパラメーターとしてサポートするこのAPIを代わりに使用するように言われています。したがって、受け入れられた答えから抜け出すには:

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
回答のリンクはもう関連性がないようです。
2016

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>

結果:商標ᵀᴹ

上付き文字と下付き文字

上付きの大文字 ᴬᴮᴰᴱᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾᴿᵀᵁⱽᵂ

上付きマイナス記号culᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖʳˢᵗᵘᵛʷˣʸᶻ

添え字マイナス eₑₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓ


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.