2011-09-07 13 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); 
} 

どのように見えるかです。

関連する問題