Làm cách nào bạn có thể in một chuỗi có chỉ số dưới hoặc chỉ số trên? Bạn có thể làm điều này mà không cần thư viện bên ngoài không? Tôi muốn điều này hiển thị trong một TextView
trong Android.
Làm cách nào bạn có thể in một chuỗi có chỉ số dưới hoặc chỉ số trên? Bạn có thể làm điều này mà không cần thư viện bên ngoài không? Tôi muốn điều này hiển thị trong một TextView
trong Android.
Câu trả lời:
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));
hoặc là
Thí dụ:
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);
equation.setText(blah+cs);
nó không hoạt động. Hoạt động tốt mặc dù vậy. Làm thế nào để có được công việc đó?
Đối với tất cả những người hỏi, nếu bạn muốn làm cho nó nhỏ hơn ngoài việc tạo super hoặc subscript, bạn chỉ cần thêm tag. VÍ DỤ:
"X <sup><small> 2 </small></sup>"
Trong mã chỉ cần nhập "\ u00B2" Như thế này:
textView.setText("X\u00B2");
Nếu bạn muốn đặt chỉ số trên từ tệp string.xml, hãy thử cách này:
tài nguyên chuỗi:
<string name="test_string">X<sup>3</sup></string>
nếu bạn muốn chỉ số trên nhỏ hơn:
<string name="test_string">X<sup><small>3</small></sup></string>
Mã:
textView.setText(Html.fromHtml("Anything you want to put here"+getString(R.string.test_string)));
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup><small>2</small></sup>"));
(hoặc) Từ Tệp Tài nguyên Chuỗi:
<string name="test_string">
<![CDATA[ X<sup><small>2</small></sup> ]]>
</string>
Câu trả lời được chấp nhận hiện không được dùng nữa. Vì vậy, xin vui lòng xem qua đoạn mã này. Tôi lấy cái này từ một số trang web. Tôi quên tên nhưng dù sao cũng cảm ơn vì đoạn mã làm việc tốt này.
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);
Lưu ý: Luôn đặt android:textAllCaps="false"
spantext của bạn.
HTML.fromHTML (String) không được dùng nữa kể từ API 24. Họ nói rằng hãy sử dụng cái này để thay thế, hỗ trợ cờ làm tham số. Vì vậy, để đi ra khỏi câu trả lời được chấp nhận:
TextView textView = ((TextView)findViewById(R.id.text));
textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY));
Và nếu bạn muốn mã xem xét cả API trước 24:
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>"));
}
Câu trả lời này được lấy từ: https://stackoverflow.com/a/37905107/4998704
Các cờ và tài liệu khác có thể được tìm thấy tại đây: https://developer.android.com/reference/android/text/Html.html
Chúng được gọi là các ký tự Unicode và Android TextView
hỗ trợ chúng. Sao chép super / sub-script bạn muốn từ Wiki này: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscripts
Đối với "a", hãy sao chép và dán "ᵃ" này
Bạn có thể sao chép và dán trực tiếp bất kỳ Bảng ghi tên và Đăng ký nào trong số này vào Tài nguyên chuỗi Android của mình.
Thí dụ:
<string name="word_with_superscript" translatable="false">Trademark ᵀᴹ</string>
Kết quả: Nhãn hiệu ᵀᴹ
Chữ cái Superscript và Subscript
Chữ viết hoa ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ
Chỉ số siêu nhỏ ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ
Chỉ số dưới cực nhỏ ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₜ ᵤ ᵥ ₓ
yourTextView.setText(Html.fromHtml("X<sup>2</sup>"));
This will be the result in you yourTextView =
X 2