2012-01-28 172 views

回答

0

不能完全肯定,但也许你可以这样做:

link

TextView test = (TextView) findViewById(R.id.test); 

test.setShadowLayer(float, float, float, int); 
+3

阴影层不同,它会在文本后面放一个指定的颜色,然后文本会出现一些模糊的东西。 – 2012-01-28 11:18:59

+0

嗯,我想我知道你的意思,它不会创造干净的边缘吗? 我在想使用设置文本颜色黑色和喜欢的影子红色或什么 – FabianCook 2012-01-28 12:15:27

+0

看到如何处理“你好”的背景颜色的边缘不模糊,这就是我的意思是一个干净的边缘 – FabianCook 2012-01-28 12:18:42

15

不要使用FILL_AND_STROKE。用FILL绘制一次,然后改变颜色并用STROKE绘制。

(对于矩形的作品我不知道中风在所有工作的文字你也来试试吧,看看。)

+0

我试过了,但是当笔画宽度更大时,结果文本看起来不太好。 – 2012-01-28 11:20:32

+0

不止是什么? – 2012-01-28 15:00:57

+1

为更高的文本大小和笔触宽度生成的文本看起来丑陋。 – 2012-01-28 15:04:32

16

内部定制的TextView(在EditText上不工作):

@Override 
public void onDraw(Canvas canvas) 
{ 
    final ColorStateList textColor = getTextColors(); 

    TextPaint paint = this.getPaint(); 

    paint.setStyle(Style.STROKE); 
    paint.setStrokeJoin(Join.ROUND); 
    paint.setStrokeMiter(10); 
    this.setTextColor(strokeColor); 
    paint.setStrokeWidth(strokeWidth); 

    super.onDraw(canvas); 
    paint.setStyle(Style.FILL); 

    setTextColor(textColor); 
    super.onDraw(canvas); 
} 
+0

如果你在自定义的EditText中实现它,这是行不通的,在这种情况下显示最后setTextColor,任何想法为什么? – TilalHusain 2014-01-23 17:15:03

+0

@Architact很可能是因为'EditText'的'onDraw'的实现默认会绘制背景,因此第二次调用会绘制第一个。这只适用于透明背景。在不透明背景的情况下你需要做的是从super复制整个onDraw,并且只绘制文本两次。 – Trilarion 2016-01-05 20:42:03

+0

它会永远循环onDraw – user924 2017-11-18 11:24:35

0

我使用的第一个解决方案上面想出这个主意:放下更大的中风,文本,然后用小FILL_AND_STROKE文本覆盖它:

mScorePaint = new TextPaint(); 
mScorePaint.setTextSize(63); 
mScorePaint.setStyle(Style.STROKE); 
mScorePaint.setStrokeJoin(Join.ROUND); 
mScorePaint.setStrokeMiter(10.0f); 
mScorePaint.setStrokeWidth(frameWidth/50.0f); // about 12 
mScorePaint.setColor(0xffff0000); // black 

c.drawText(Integer.toString(mScore), x, y, mScorePaint); // red first 

mScorePaint.setStrokeWidth(frameWidth/125.0f); // about 5 
mScorePaint.setColor(0xff000000); // red 

c.drawText(Integer.toString(mScore), x, y, mScorePaint); // black on top 

因为FILL单独WA没有看到任何Stroke属性,而且显得非常单薄。

+0

这是愚蠢的,我只是想使用TextView的布局参数,我怎么知道哪个x,y我应该设置为c .drawText方法,没用 – user924 2017-11-18 11:25:58

相关问题