[英]Android Canvas drawText not working
我使用畫布的drawText方法創建了一個自定義視圖。 不知何故,這些文本都沒有顯示在任何Jelly Bean設備上。 它適用於ICS及以下版本。
有人知道該方法或任何相關方法的內容是否已從API 15更改為16嗎?
編輯代碼:(從提供畫布作為參數的draw方法中進行)
paint = new Paint();
paint.setAntiAlias(true);
paint.setStrokeWidth(3);
paint.setColor(context.getResources().getColor(R.color.plot_background));
canvas.drawRect(new Rect(0,0,getWidth(),getHeight()), paint);
paint.setColor(color_text);
paint.setTextSize(getScaled(18.5f));
paint.setTextAlign(Align.CENTER);
canvas.drawText(title, (graphwidth / 2) + horstart, border/2+15, paint);
我知道該行已執行並且坐標正確,因為相同的代碼可在較舊的平台上工作。
謝謝埃里克。 找出錯誤。 我基於canvas.getDensity()縮放應用程序中的所有內容。 由於某種原因,對於軟心豆粒糖設備,此時draw函數始終為0的getDensity()。 但是它確實為1.6-> 4.0.3之間的任何值返回正確的值
我之所以沒有發布代碼(這是我的錯)是因為我不懷疑getDensity()是問題所在,因為在過去兩年中該應用程序投放市場以來從未如此。
解決方法是修改getScaled函數。
public float getScaled(Canvas canvas,float in){
return in * ( canvas.getDensity()==0 ? 1 : canvas.getDensity()/ 160.0f);
}
該文檔確實說過可以返回DENSITY_NONE,但是我認為可能發生的是在Jelly Bean中為您進行縮放,因為如果我將其乘以1,它就可以在我剛剛測試的兩個不同密度的設備上發揮作用上。
(PS:如果我輸入錯誤或確認,熟悉Android OS內部結構的人可以糾正我嗎?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.