2011-09-07 104 views
16

我有一個問題。我想有一個漸變顏色的文本視圖。它背後有一個黑影。問題是,陰影使用漸變的顏色使用被叫顏色代替(Color.BLACKTextView添加漸變和陰影

我的代碼是: 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!? 
      ); 

有誰知道該怎麼做

回答

17

我有完全相同的問題。 我設法通過擴展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); 
} 

但是這種方法可能不會,如果你想在漸變中使用的顏色與透明度的工作。