3
A
回答
2
3
你的onDraw()方法有一些問題。由於您沒有明確更改文本對齊方式,因此文本默認對齊到左側。在此模式下,文本從左側(x)繪製到基線(y)的正上方。在你的代碼中x = 0和y = 0,因此文本開始從x = 0向基線y = 0的右上方繪製,因此你的文本是不可見的。這裏是你的代碼的修改版本:
公共類FastTextView擴展查看 {
private Context mContext;
private String mText = "";
private int mTextSize;
private Paint mPaint;
private int paddingLeft = 0;
private int paddingRight = 0;
private int paddingTop = 0;
private int paddingBottom = 0;
private int fontSize = 100;
public void setText(String text)
{
mText = text;
}
public FastTextView (Context context)
{
super(context);
initialize();
}
public FastTextView (Context context, AttributeSet attrs)
{
super(context, attrs);
initialize();
}
public void setPaddingLeft(int padding)
{
paddingLeft = padding;
}
public void setPaddingRight(int padding)
{
paddingRight = padding;
}
public void setPaddingBottom(int padding)
{
paddingBottom = padding;
}
public void setPaddingTop(int padding)
{
paddingTop = padding;
}
public void setFontSize(int size)
{
fontSize = size;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
Rect rect = new Rect();
mPaint.getTextBounds(mText.toString(), 0, mText.length(), rect);
int width = Math.max(rect.width(), getSuggestedMinimumWidth()) + paddingLeft + paddingRight;
int height = Math.max(rect.height(), getSuggestedMinimumHeight()) + paddingTop + paddingBottom;
setMeasuredDimension(width, height);
}
/**
* Initialize the view
*/
private void initialize()
{
mContext = getContext();
mPaint = new Paint();
mPaint.setColor(Color.RED);
mPaint.setTextSize(fontSize);
mPaint.setTextAlign(Align.LEFT);
setBackgroundColor(Color.GREEN);
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.drawColor(Color.BLUE);
int x = paddingLeft;
int y = paddingTop + fontSize;
if (mText.length() > 0) {
canvas.drawText(mText, x, y-fontSize/4, mPaint);
}
}
}
相關問題
- 1. 繪製自定義JButton和文本行
- 2. MonoTouch:自定義繪圖文本allways繪製翻轉文本
- 3. 我如何自定義繪製的TEdit控制文本?
- 4. 機器人 - 爲什麼自定義繪製不影響TextView的
- 5. 的TextView與底部繪製自定義行
- 6. CAShapeLayers不繪製自定義子類(UIControl)
- 7. 使用canvas.draw()繪製自定義類
- 8. UIButton的自定義繪製
- 9. DatagridViewComboBoxColumn的自定義繪製
- 10. 創建自定義RGB顏色和實現自定義繪製
- 11. 在自定義上下文中繪製
- 12. Android TextView可繪製,更改可繪製和文本之間的填充?
- 13. 自定義繪製CProgressBarCtrl win32
- 14. 繪製自定義按鈕
- 15. 繪製自定義圖表
- 16. 繪製自定義NSScroller
- 17. 繪製自定義組件
- 18. 自定義繪製UITableViewCell
- 19. cxGrid自定義FocusRect繪製
- 20. 如何動畫自定義繪製文本的大小?
- 21. 關於繪製自定義文本查看器的建議
- 22. 在windows api中的自定義按鈕上繪製文本
- 23. 使用自定義TextView類時的Classcastexception
- 24. 自定義繪圖文本C#
- 25. 如何創建自定義文本字段和textview
- 26. 繪製自己的自定義視圖
- 27. Android:定期更改自定義ListView的TextView的文本
- 28. 自定義字體和自定義的TextView在Android
- 29. c#使用自定義像素繪製文本
- 30. Orchard CKEditor不在自定義文本區域上繪製
爲什麼這是什麼問題?你的目標是什麼? –
你想用TextView實現這一點是不可能的?使用或擴展現有的TextView類有很多好處,包括換行和定位。 – alanv
我知道我可以使用TextView,但我需要實現我自己的,這是我的任務。 – arts777