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