我一直在尝试添加PagerSlidingTabStrip
可用作该页面的未读计数器或通知计数的自定义视图。我正在使用 PagerSlidingTabStrip,因为它比 SlidingTabLayout 更可定制。
我尝试了以下方法:-
@Override
public CharSequence getPageTitle(int position) {
SpannableStringBuilder stringBuilder = new SpannableStringBuilder();
String mCounterText = "1";
String mHeaderText = "Header ";
stringBuilder.append(mHeaderText);
stringBuilder.append(mCounterText);
stringBuilder.setSpan(new RoundedBackgroundSpan(), mHeaderText.length()-1, mHeaderText.length()+mCounterText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return stringBuilder;
}
我也尝试从中传递 Html,getPageTitle
但它仍然只从中提取字符串。样式不适用于选项卡标题。
无论我从什么传递getPageTitle
,它只是从中提取简单的字符串。
以下是我到目前为止所取得的成就:
我试过SlidingTabLayout
which do gimme result of unread/notification counter 但它适用于 2.3.7 而不适用于当时的任何版本。
为什么它不适用于 2.3.7 以上的版本?
RoundedBackgroundSpan : -
public class RoundedBackgroundSpan extends ReplacementSpan {
/*
* (non-Javadoc)
*
* @see android.text.style.ReplacementSpan#draw(android.graphics.Canvas,
* java.lang.CharSequence, int, int, float, int, int, int,
* android.graphics.Paint)
*/
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end,
float x, int top, int y, int bottom, Paint paint) {
// TODO Auto-generated method stub
RectF rect = new RectF(x, top,
x + MeasureText(paint, text, start, end), bottom);
paint.setColor(Color.parseColor("#FF0000"));//background color
canvas.drawRoundRect(rect, 3, 3, paint);
paint.setColor(Color.parseColor("#FFFFFF"));//text color
canvas.drawText(text, start, end, x, y, paint);
}
/*
* (non-Javadoc)
*
* @see android.text.style.ReplacementSpan#getSize(android.graphics.Paint,
* java.lang.CharSequence, int, int, android.graphics.Paint.FontMetricsInt)
*/
@Override
public int getSize(Paint paint, CharSequence text, int start, int end,
FontMetricsInt fm) {
// TODO Auto-generated method stub
return Math.round(MeasureText(paint, text, start, end));
}
private float MeasureText(Paint paint, CharSequence text, int start,
int end) {
return paint.measureText(text, start, end);
}
}