将 textView 渲染到 View 上

Posted

技术标签:

【中文标题】将 textView 渲染到 View 上【英文标题】:Rendering a textView onto a View 【发布时间】:2015-10-15 18:06:08 【问题描述】:

我有一个扩展 View 的类。

在那堂课中,我画了一个纯白色的屏幕,然后想在上面画一些文字:

我已经尝试使用 textView 和 canvas.drawText 进行此操作,但我无法获取任何要呈现的文本。知道问题出在哪里吗?

public class MyView extends View

    Paint myPaint;
    Paint textPaint;
    Rect background;
    RelativeLayout layout;
    TextView text;

    public myView(Context context, int width, int height)

        myPaint = new Paint();        
        myPaint.setColor(Color.WHITE);

        textPaint = new Paint();
        textPaint.setColor(Color.BLACK);

        background = new Rect(0, 0, width, height);

        layout = new RelativeLayout(context);
        layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,    LayoutParams.MATCH_PARENT));

        text = new TextView(context);
        text.setTextColor(Color.BLACK);
        text.setSize(20);
        text.setText("Test");

        layout.addView(layout);

    

   @Override
   public void onDraw(Canvas canvas)

       canvas.drawRect(background, myPaint);   //This draws OK 

       layout.draw(canvas); //Text doesn't draw

       canvas.drawText("Test", 0, 0, textPaint); //This also doesn't draw

   

【问题讨论】:

【参考方案1】:

您将 myPaint 设置为黑色和白色,根本没有设置 textPaint 颜色。对于文本绘制,我相信您还需要设置文本大小。所以改变这些行:

textPaint = new Paint();
myPaint.setColor(Color.BLACK);

进入这个:

textPaint = new Paint();
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(20);

编辑:

将原点放置在 0,0 以外的位置。示例:

canvas.drawText("Test", 100, 100, textPaint);

【讨论】:

糟糕的是颜色,这是一个错字:-) 我现在已经更正了。我会尝试在 textPaint 上设置大小。谢谢 不幸的是,这不起作用,我仍然没有收到任何文字@MitchDart 我可以建议您将矩形的绘制颜色设置为 Color.RED 之类的颜色,以便确保您的视图完全膨胀到可见尺寸吗? 如果我将其更改为 Colour.RED,我确实会得到一个空的红色屏幕。谢谢 我自己测试了一下。问题是 X、Y 原点。它不能为 0,0,因为它开始在原点上方绘制。将其设为 20、20 或计算文本的高度。

以上是关于将 textView 渲染到 View 上的主要内容,如果未能解决你的问题,请参考以下文章