Android에서 아래 첨자와 위 첨자 문자열
아래 첨자 나 위첨자로 문자열을 어떻게 인쇄 할 수 있습니까? 외부 라이브러리없이이 작업을 수행 할 수 있습니까? 나는 이것이 TextView
안드로이드에서 표시되기를 원합니다 .
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));
또는
예:
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);
질문하는 모든 사람들에게 위 첨자 나 아래 첨자 외에 더 작게 만들고 싶다면 태그도 추가하면됩니다. 전의:
"X <sup><small> 2 </small></sup>"
string.xml 파일에서 위 첨자를 설정하려면 다음을 시도하십시오.
문자열 리소스 :
<string name="test_string">X<sup>3</sup></string>
위 첨자를 더 작게하려면 :
<string name="test_string">X<sup><small>3</small></sup></string>
암호:
textView.setText(Html.fromHtml("Anything you want to put here"+getString(R.string.test_string)));
조금 늦었지만 잘 작동하고 위 첨자를 특수 문자로 사용하고 여기에 공백 문자를 사용했습니다.
<string name="str">H₂</string>
코드에서 다음과 같이 "\ u00B2"를 넣으십시오.
textView.setText("X\u00B2");
((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>
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를 입력 하십시오.
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 에서 찾을 수 있습니다.
I found this article on how to use a Spannable
or in a string resource file: <sup>
or <sub>
for superscript and subscript, respectively.
In the strings.xml
files, you can just use the HTML <sup>3</sup>
tag. Work perfectly for me
EXAMPLE
<string name="turnoverRate">Turnover rate m<sup>3</sup>/m<sup>2</sup>/hour:</string>
They are called Unicode characters, and Android TextView
supports them. Copy the super/sub-script you want from this Wiki: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscripts
yourTextView.setText(Html.fromHtml("X<sup>2</sup>"));
This will be the result in you yourTextView =
X2
참고URL : https://stackoverflow.com/questions/3543454/subscript-and-superscript-a-string-in-android
'Programing' 카테고리의 다른 글
bash / cut / split을 사용하여 문자열의 일부 추출 (0) | 2020.08.26 |
---|---|
삼항 연산자를 사용할 때 C에서 문자열 연결을 허용하지 않는 이유는 무엇입니까? (0) | 2020.08.26 |
파이썬에서 문자열을 목록으로 변환하는 방법은 무엇입니까? (0) | 2020.08.26 |
errno : 150을 제공하는 외래 키를 사용하여 MySQL 생성 테이블 (0) | 2020.08.26 |
Android Studio-자동 완성 및 기타 기능이 작동하지 않음 (0) | 2020.08.26 |