将 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 上的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序

如何在 swift Xcode 中将 TextView 添加到 VStack 的顶部?

Android自定义view与activity的传值

SwiftUI 将数据从 Firebase 加载到 TextView

iOS UITextView文本怎样居上显示而不是默认的居中?

如何将 View 参数(TextView)从 OnClickListener 传递给公共方法