如何在标记信息窗口的一行中制作 2 个彩色文本?
How to make 2 colored text in a line in a marker infowindow?
我想制作一个标记信息window,它有3行,每行包含2种颜色。
我在
的帮助下制作了 3 行
mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter()
但我被颜色困住了。
请帮忙:)
您可以使用 SpannableString 在 TextView
或其他启用文本的组件
中的单个字符串句子中设置多种颜色
String strMessage="I am android developer";
Spannable spannable = new SpannableString(strMessage);
//"I am android" red colored
spannable.setSpan(getTextAppearanceSpan(ContextCompat.getColor(mContext, android.R.color.RED)), 0, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannable);
//"developer" blue colored
spannable.setSpan(getTextAppearanceSpan(ContextCompat.getColor(mContext, android.R.color.BLUE)), 14, strMessage.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannable);
TextAppearanceSpan 自定义颜色文本的方法
/*
*get customized text with color, style
*/
private TextAppearanceSpan getTextAppearanceSpan(int color) {
ColorStateList blueColor1 = new ColorStateList(new int[][]{new int[]{}}, new int[]{color});
return new TextAppearanceSpan(null, Typeface.NORMAL, -1, blueColor1, null);
}
我想制作一个标记信息window,它有3行,每行包含2种颜色。 我在
的帮助下制作了 3 行mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter()
但我被颜色困住了。
请帮忙:)
您可以使用 SpannableString 在 TextView
或其他启用文本的组件
String strMessage="I am android developer";
Spannable spannable = new SpannableString(strMessage);
//"I am android" red colored
spannable.setSpan(getTextAppearanceSpan(ContextCompat.getColor(mContext, android.R.color.RED)), 0, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannable);
//"developer" blue colored
spannable.setSpan(getTextAppearanceSpan(ContextCompat.getColor(mContext, android.R.color.BLUE)), 14, strMessage.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannable);
TextAppearanceSpan 自定义颜色文本的方法
/*
*get customized text with color, style
*/
private TextAppearanceSpan getTextAppearanceSpan(int color) {
ColorStateList blueColor1 = new ColorStateList(new int[][]{new int[]{}}, new int[]{color});
return new TextAppearanceSpan(null, Typeface.NORMAL, -1, blueColor1, null);
}