2014-03-03 56 views
1

我正在創建自己的視圖。現在我想要做的就是用顏色漸變繪製圓角矩形。自定義Android視圖中未顯示漸變

這裏是我創建的梯度:

public void changePressedColor(int[] colors){ 
    if (colors != null){ 
     if (colors.length == 2){ 
      pressedcolors = colors; 
      whenpressed = new LinearGradient(0,0,getWidth(),getHeight(),pressedcolors[0],pressedcolors[1], Shader.TileMode.MIRROR); 
     } 
    } 
} 

Wherre按顏色從參數傳遞:

int[] pc = new int[2]; 
    pc[0] = Color.rgb(0,0,50); 
    pc[1] = Color.rgb(114,112,255); 

後來,當我畫我這樣做:

protected void onDraw(Canvas canvas){ 

    painter.setShader(whenpressed); 
    painter.setStyle(Paint.Style.FILL); 
    canvas.drawRoundRect(rect,rx,ry,painter); 

    painter.setShader(null); 
    painter.setStyle(Paint.Style.STROKE); 

    painter.setColor(textColor); 
    canvas.drawText(text,cx,cy+offsety,painter); 
} 

問題是沒有漸變出現。相反,有一個純色等於梯度的第一個顏色。視圖的高度,矩形和漸變是相同的。

任何想法我做錯了什麼。

感謝您的任何幫助。

回答

1

當您致電getWidth()getHeight()時,請小心,它們可能尚未計算。

+0

不錯的嘗試!但是,不幸的是沒有。它的值是48,與按鈕高度相同。 – aarelovich

+0

你在'changePressedColor'中檢查它是否正確,而不是'onDraw'? – weston

+0

哇!你是對的!!!這是問題所在,我從內部變量中獲得了高度,並且工作正常。我只是沒有看到它,因爲我有其他代碼問題。謝謝! – aarelovich