Subcript و SuperScript A String في Android
-
30-09-2019 - |
سؤال
كيف يمكنك طباعة سلسلة مع مرتبة أو superscript؟ هل يمكنك القيام بذلك بدون مكتبة خارجية؟ أريد أن يعرض هذا في TextView
في Android.
المحلول
((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>"
إذا كنت ترغب في تعيين superscript من ملف string.xml ، فحاول:
مورد السلسلة:
<string name="test_string">X<sup>3</sup></string>
إذا كنت تريد أن يكون SuperScript أصغر:
<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)));
في الكود ، فقط وضع هذا " u00b2" مثل هذا:
textView.setText("X\u00B2");
لقد تأخرت قليلاً ولكن بعد العمل بشكل جيد ، استخدم SuperScript كشخصية خاصة ، لقد استخدمت Char Spacial هنا.
<string name="str">H₂</string>
((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>
الإجابة المقبولة تم إهمالها الآن. لذا يرجى الذهاب من خلال هذه القطعة من الرمز. حصلت على هذا من بعض موقع الويب. لقد نسيت الاسم ولكن على أي حال ، شكرًا على هذا القطعة الجيدة من رمز العمل.
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 (سلسلة) اعتبارًا من API 24. يقولون لاستخدام هذا واحد بدلاً من ذلك ، والذي يدعم الأعلام كمعلمة. حتى تنطلق من الإجابة المقبولة:
TextView textView = ((TextView)findViewById(R.id.text));
textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY));
وإذا كنت تريد رمزًا يعتبر Pre-24 API's أيضًا:
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
وجدت هذه مقال حول كيفية استخدام أ Spannable
أو في ملف مورد السلسلة: <sup>
أو <sub>
ل superscript و subcript ، على التوالي.
في ال strings.xml
الملفات ، يمكنك فقط استخدام HTML <sup>3</sup>
بطاقة شعار. العمل تماما بالنسبة لي
مثال
<string name="turnoverRate">Turnover rate m<sup>3</sup>/m<sup>2</sup>/hour:</string>
يطلق عليهم أحرف Unicode ، و Android TextView
يدعمهم. انسخ النسك الفائق/الفرعي الذي تريده من هذا الويكي: 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