2013-07-29 49 views
38

我想要一個帶有粗體文本的位圖圖標在地圖上繪製。我有一個片段寫在圖像文本:如何在位圖上繪製粗體文本?

Bitmap icon = BitmapFactory.decodeResource(PropertyMapList.this.getResources(), 
     R.drawable.location_mark); 
TextPaint paint = new TextPaint(); 
paint.setColor(Color.BLACK); 
paint.setTextSize(14); 
paint.setFakeBoldText(true); 
//paint.setTextAlign(Align.CENTER); 
Bitmap copy = icon.copy(Bitmap.Config.ARGB_8888, true); 
Canvas canvas = new Canvas(copy); 
//canvas.drawText(jsonObj.getString("district_name"), 5, canvas.getHeight()/2, paint); 
String districtName = jsonObj.getString("district_name"); 
StaticLayout layout = new StaticLayout((districtName.length()>25 ? districtName.substring(0, 24)+"..":districtName)+"\n"+jsonObj.getString("total_properties"), paint, canvas.getWidth()-10,Layout.Alignment.ALIGN_CENTER, 1.3f, 0, false); 
canvas.translate(5, canvas.getHeight()/2); //position the text 
layout.draw(canvas); 

setFakeBoldText(true)不會爲我工作。我希望在位圖上繪製的文本以粗體顯示。

回答

113

Paint對象上使用setTypeface方法將字體設置爲打開粗體樣式的內容。

paint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD)); 
+1

你能解釋清楚嗎? –

+0

setTypeface允許您設置字體。字體有樣式,如粗體,斜體等。您可以查看字體的構造函數,然後瞭解如何使用該樣式創建字體。一旦你創建了一個並通過這個調用進行設置,所有未來的繪製命令都將使用該字體。 –

+1

我試過6或7個答案,而這個是唯一真正有效的答案。 – durbnpoisn