J'ai essayé d'ajouter une vue personnalisée sur PagerSlidingTabStrip
qui peut être utilisée comme compteur non lu ou nombre de notifications pour cette page. J'utilise PagerSlidingTabStrip car il est plus personnalisable que SlidingTabLayout.Ajouter le compte non-notifcation/notifcation à PagerSlidingTabStrip
J'ai essayé ce qui suit: -
@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;
}
J'ai aussi essayé de passer Html de getPageTitle
mais encore extrait la chaîne que par elle. Le style ne s'applique pas au titre des onglets.
Peu importe ce que j'ai passé de getPageTitle
, il extrait juste une chaîne simple de celui-ci.
Voici ce que j'ai accompli jusqu'à présent:
J'ai essayé avec SlidingTabLayout
qui ne nécessitent gimme du compteur non lu/notification, mais il fonctionne avec 2.3.7 et non avec tout version ci-dessus.
Pourquoi cela ne fonctionnait pas avec la version 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);
}
}
On dirait une implémentation personnalisée de 'ReplacementSpan'. – Vikram
@Vikram: Essayé avec ReplacementSpan mais toujours il n'en extrait que des cordes. –
Ceci est une supposition .. J'ai vu 'toutes les majuscules 'interférer avec les travées avant. Est-ce que vous définissez ceci dans vos styles de texte? – Vikram