2017-10-10 125 views
-1

我試圖使用Rect創建button。我已經成功創建了這個圖片,但是我的圖片和文字不在中心。我想設置在確切的中心,但無法實現。我需要通過Rect來做到這一點。請指導我,任何幫助將不勝感激。由於在Rect上繪製畫布圖像和文字

這裏是我的代碼片段

RectF rightButton = new RectF(itemView.getRight() - 
buttonWidthWithoutPadding, itemView.getTop(), itemView.getRight(), itemView.getBottom()); 
    p.setColor(Color.parseColor("#F44336")); 
    c.drawRoundRect(rightButton, corners, corners, p); 
    drawView("DELETE", c, rightButton, p); 


//draw view method 
private void drawView(String text, Canvas c, RectF button, Paint p) { 
    float textSize = 20; 
    p.setColor(Color.WHITE); 
    p.setAntiAlias(true); 
    p.setTextSize(textSize); 

    float textWidth = p.measureText(text); 
    Bitmap bmp = drawableToBitmap(ContextCompat.getDrawable(mContext, R.drawable.delete_white_24dp)); 
    c.drawBitmap(bmp, button.centerX() - (bmp.getWidth()/2), button.centerY() - (bmp.getHeight()/2), null); 
    c.drawText(text, button.centerX() - (textWidth/2), button.centerY() + bmp.getHeight(), p); 
} 

預計輸出

我的輸出(不完全是在中心還圖像和文本之間沒有空格

回答

1

在drawView函數試試這個(而不是最後2行):

float spaceHeight = 10; // change this to whatever looks good to you 
Rect bounds = new Rect(); 
p.getTextBounds(text, 0, text.length(), bounds); 
float combinedHeight = bmp.getHeight() + spaceHeight + bounds.height(); 
c.drawBitmap(bmp, button.centerX() - (bmp.getWidth()/2), button.centerY() - (combinedHeight/2), null); 
c.drawText(text, button.centerX() - (textWidth/2), button.centerY() + (combinedHeight/2), p); 

你想中心圖標+空格+文字的組合,而不僅僅是圖標。現在這個圖標完全在中間,由於圖標的一半高度,圖標正好在它的下面。

+0

感謝它的工作 –