将 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 的顶部?
SwiftUI 将数据从 Firebase 加载到 TextView