Comment présenter un TextView?
Ce que je veux faire? (le bleu sera changé blanc)
Ce que j'ai fait?
J'ai trouvé une classe qui étend TextView qui peuvent exposer textview très proche de ce que je veux. Le problème est que je ne pouvais pas changer la couleur de peinture de toutes les couleurs, il dessine toujours aussi noir. Comment définir la frontière de la couleur que le blanc?
Qu'est-ce que mon sortie:
Où sont mes codes?
public class TypeFaceTextView extends TextView {
private static Paint getWhiteBorderPaint(){
Paint p = new Paint(Color.WHITE);
return p;
}
private static final Paint BLACK_BORDER_PAINT = getWhiteBorderPaint();
static {
BLACK_BORDER_PAINT.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
}
@Override
public void setText(CharSequence text, BufferType type) {
super.setText(String.format(text.toString()), type);
}
private static final int BORDER_WIDTH = 1;
private Typeface typeface;
public TypeFaceTextView(Context context) {
super(context);
}
public TypeFaceTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setDrawingCacheEnabled(false);
setTypeface(attrs);
}
private void setTypeface(AttributeSet attrs) {
final String typefaceFileName = attrs.getAttributeValue(null, "typeface");
if (typefaceFileName != null) {
typeface = Typeface.createFromAsset(getContext().getAssets(), typefaceFileName);
}
setTypeface(typeface);
}
public TypeFaceTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setTypeface(attrs);
}
@Override
public void draw(Canvas aCanvas) {
aCanvas.saveLayer(null, BLACK_BORDER_PAINT, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG
| Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.MATRIX_SAVE_FLAG);
drawBackground(aCanvas, -BORDER_WIDTH, -BORDER_WIDTH);
drawBackground(aCanvas, BORDER_WIDTH + BORDER_WIDTH, 0);
drawBackground(aCanvas, 0, BORDER_WIDTH + BORDER_WIDTH);
drawBackground(aCanvas, -BORDER_WIDTH - BORDER_WIDTH, 0);
aCanvas.restore();
super.draw(aCanvas);
}
private void drawBackground(Canvas aCanvas, int aDX, int aDY) {
aCanvas.translate(aDX, aDY);
super.draw(aCanvas);
}
}
Veuillez regarder l'image, ce n'est pas pertinent ce que je veux faire.
Salut Mustafa, j'ai posté la solution à votre problème. Faire vérifier si cela fonctionne, au lieu d'utiliser "l'ombre" solution de contournement. Merci.
double possible de textview Android contour du texte
Salut Mustafa, j'ai posté la solution à votre problème. Faire vérifier si cela fonctionne, au lieu d'utiliser "l'ombre" solution de contournement. Merci.
double possible de textview Android contour du texte
OriginalL'auteur Mustafa Güven | 2013-02-26
Vous devez vous connecter pour publier un commentaire.
1) créer votre textview objet s'étend au-TextView
2) le Faire sur sa méthode de tirage
3) textview xml de côté, comme ci-dessous
OriginalL'auteur Mustafa Güven
Ne pouvais pas cela, mais essayez d'expérimenter avec: PorterDuff.Mode
http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
Essayez de la remplacer par "AJOUTER" ou "CLAIR", espérons que cette aide.
OriginalL'auteur Ferdau
Vous avez besoin de changer votre getWhiteBorderPaint() la méthode la suivante:
La Peinture constructeur ne prend bitmasked drapeaux et ne prend pas en charge arbitraire ints en tant que paramètres.
OriginalL'auteur Mark
Étudié dans le problème original est indiqué par cette question. Trouvé la solution.
D'abord, changer DST_OUT pour ASSOMBRIR
Ensuite, enregistrer le texte original de la couleur, et de mettre l'intention de couleur de contour, de dessiner le contour, puis rétablir le texte initial de la couleur.
OriginalL'auteur Elye
J'ai trouvé de façon simple, à la vue de contour sans l'héritage de TextView.
J'avais écrit simple bibliothèque qui utilisent Android Spannable pour le contour de texte.
Cette solution donne la possibilité de décrire une partie seulement du texte.
Bibliothèque: OutlineSpan
Classe (vous pouvez copier uniquement la classe):OutlineSpan
OriginalL'auteur Pavel Santaev