كيف يمكنني تعيين لون النص الملخص لملخص Android؟
-
25-09-2019 - |
سؤال
على شاشة التفضيل الخاصة بي ، لدي تفضيل أنه عند النقر فوق ، يفتح مربع حوار منتقي الألوان. ما أود القيام به هو عندما يختار المستخدم لونًا ، يتم عرض ملخص النص للتفضيل في هذا اللون.
أعلم أنه يمكنني إعداد الملخص مثل هذا ، Currently <font color="#ff0000">this color</font>
وجعله يعرض في هذا اللون. المشكلة هي اللون الذي أعود إليه هو لون Android Int.
يمكنني استخدام الأساليب Red () و Green () و Blue () ثم تحويلها إلى Hex ثم الجمع بينها في سلسلة حتى أتمكن من ضبط النص الموجز مع القيمة الجديدة وهذا يعمل: String colorString = String.format("#%02x%02x%02x",Color.red( defaultColor ), Color.green( defaultColor ), Color.blue( defaultColor ));
كنت فضوليًا إذا كان هناك طريقة أسهل للقيام بذلك.
شكرا في وقت مبكر.
شون
المحلول
حسنًا ، ما انتهى بي الأمر هو استخدام spannable. هذا يأخذ اللون باعتباره عدد صحيح.
Spannable summary = new SpannableString("Currently This Color");
summary.setSpan(new ForegroundColorSpan(color), 0, summary.length(), 0);
preference.setSummary(summary);
نصائح أخرى
استخدم html.fromhtml لتصميم النص الخاص بك.
mPodFolderPref.setTitle(Html.fromHtml("<font color='red'>" + mPodFolderPref.getTitle() + "</font>"));
mPodFolderPref.setSummary(Html.fromHtml("<font color='red'>" + mPodFolderPref.getSummary() + "</font>"));
HTML.FromHtml يمكن أن تفعل الكثير من أجلك.
متأخر بعض الشيء ، لكنني وجدت مفيدًا لكتابة هذه الأساليب المستقلة بذاتها:
private void setColorPreferencesTitle(EditTextPreference textPref, int color) {
CharSequence cs = (CharSequence) textPref.getTitle();
String plainTitle = cs.subSequence(0, cs.length()).toString();
Spannable coloredTitle = new SpannableString (plainTitle);
coloredTitle.setSpan( new ForegroundColorSpan(color), 0, coloredTitle.length(), 0 );
textPref.setTitle(coloredTitle);
}
private void resetColorPreferencesTitle(EditTextPreference textPref) {
CharSequence cs = (CharSequence) textPref.getTitle();
String plainTitle = cs.subSequence(0, cs.length()).toString();
textPref.setTitle(plainTitle);
}
كل الطرق المذكورة أعلاه لم تساعدني. انتهى بي الأمر بتوسيع فئة أفضل:
public class CustomListPreferences extends Preference {
public CustomListPreferences(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomListPreferences(Context context) {
super(context);
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
((TextView)view.findViewById(android.R.id.summary)).setTextColor(getContext().get Resources().getColor(R.color.green));
}
}
مرحبًا ، يمكنك تغيير لون التفضيل باستخدام html.fromhtml ().
على سبيل المثال: عنوان السلسلة الخاصة = "" + "قم بتعيين حد إرسال الرسائل القصيرة" + "" ؛
وأضف تعيين هذه السلسلة من تطبيق Android مثل هذا.
checkpreference _test = (checkpreference) findPreference ("text") ؛ _test .SetTitle (html.fromhtml (title)) ؛
اتبع هذا الرابط لعرض HTML لنظام Android:http://www.androidpeople.com/tag/html-tags/
شكرًا