工具栏标题中的多种颜色?
Multiple colors in Toolbar title?
我想将我的工具栏标题设置为 "Videos (4)",其中 "Videos" 部分是一种颜色,“(4)”部分是另一种颜色。我想使用我的 colors.xml
资源文件中的颜色。
我该怎么做?
这是我设置工具栏标题的方式:
getSupportActionBar().setTitle("Videos (" + numVideos + ")");
String text = "<font color=#cc0029>Videos</font> <font color=#ffcc00>(" + numVideos + ")</font>";
getSupportActionBar().setTitle(Html.fromHtml(text));
您可以使用 spannable 设置自定义字体和颜色。
试试这个:
protected void setActionBarTitle(String title) {
//if API level below 18, there is a bug at Samsung and LG devices
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) {
getSupportActionBar().setTitle(title);
} else {
SpannableString s = new SpannableString(title);
s.setSpan(new TypefaceSpan(this, "Your-Font.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
s.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getApplicationContext(), R.color.colorAccent)), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
getSupportActionBar().setTitle(s);
}
}
对于您的情况,这应该有效:
SpannableString firstPart = new SpannableString("Videos ");
SpannableString lastPart = new SpannableString(" (4)");
firstPart.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getApplicationContext(), R.color.white)), 0, firstPart.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
lastPart.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getApplicationContext(), R.color.black)), 0, lastPart.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
然后将您的标题设置为:
getSupportActionBar().setTitle(firstPart + lastPart);
或者像这样:
getSupportActionBar().setTitle(TextUtils.concat(firstPart, lastPart));
我想将我的工具栏标题设置为 "Videos (4)",其中 "Videos" 部分是一种颜色,“(4)”部分是另一种颜色。我想使用我的 colors.xml
资源文件中的颜色。
我该怎么做?
这是我设置工具栏标题的方式:
getSupportActionBar().setTitle("Videos (" + numVideos + ")");
String text = "<font color=#cc0029>Videos</font> <font color=#ffcc00>(" + numVideos + ")</font>";
getSupportActionBar().setTitle(Html.fromHtml(text));
您可以使用 spannable 设置自定义字体和颜色。
试试这个:
protected void setActionBarTitle(String title) {
//if API level below 18, there is a bug at Samsung and LG devices
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) {
getSupportActionBar().setTitle(title);
} else {
SpannableString s = new SpannableString(title);
s.setSpan(new TypefaceSpan(this, "Your-Font.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
s.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getApplicationContext(), R.color.colorAccent)), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
getSupportActionBar().setTitle(s);
}
}
对于您的情况,这应该有效:
SpannableString firstPart = new SpannableString("Videos ");
SpannableString lastPart = new SpannableString(" (4)");
firstPart.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getApplicationContext(), R.color.white)), 0, firstPart.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
lastPart.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getApplicationContext(), R.color.black)), 0, lastPart.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
然后将您的标题设置为:
getSupportActionBar().setTitle(firstPart + lastPart);
或者像这样:
getSupportActionBar().setTitle(TextUtils.concat(firstPart, lastPart));