我有个问题。 我想有一个渐变颜色的文本。 它背后有一个黑影。 问题是阴影使用渐变的颜色来代替使用被调用的颜色( Color.BLACK

我的代码是: numberTextView = (TextView)findViewById(R.id.something);

  Shader textShaderTop = new LinearGradient(0, 30, 0, 60, new int[]{Color.parseColor("#A6A6A6"), Color.parseColor("#E8E8E8"), Color.parseColor("#A6A6A6")}, new float[]{0, 0.5f, 1}, TileMode.CLAMP); numberTextView.getPaint().setShader(textShaderTop); numberTextView.setShadowLayer( 0.1f, //float radius 20f, //float dx 20f, //float dy Color.BLACK //this is not black on the screen, but it uses the gradient color!? ); 


Solutions Collecting From Web of "TextView添加渐变和阴影"

我有完全一样的问题。 我设法通过扩展TextView和重写onDraw方法来解决它。 这是它的样子

 @Override protected void onDraw(Canvas canvas) { // draw the shadow getPaint().setShadowLayer(1, 1, 1, 0xbf000000); // or whatever shadow you use getPaint().setShader(null); super.onDraw(canvas); // draw the gradient filled text getPaint().clearShadowLayer(); getPaint().setShader(new LinearGradient(0, getHeight(), 0, 0, 0xffacacac, 0xffffffff, TileMode.CLAMP)); // or whatever gradient/shader you use super.onDraw(canvas); }