1

我有一个看起来像这样的自定义视图:

public class CustomView extends View {

    protected Context c;
    protected String text;
    ... // and some more useful member variables...

    public CustomView(String text, Context c, ...) {

         this.text = text; this.c = c;
         ...
    }

    @Override
    protected void onDraw(Canvas canvas) {

        super.onDraw(canvas);

        LinearLayout ll = new LinearLayout(c);
        TextView tv = new TextView(c);
        tv.setText(text);
        ll.addView(tv);

        ll.draw(canvas);
    }

在我的主要活动中,我这样做:

    RelativeLayout gamelayout = (RelativeLayout) findViewById(R.id.gamelayout);

    CustomView customview = new CustomView("Textview text", this);
    gamelayout.addView(customview);

我的问题是,根本没有绘制任何东西,绘制的 TextView 不会出现在“游戏布局”中。我究竟做错了什么?

4

2 回答 2

1

TextView 对象无法直接绘制到画布上,因为您已经完成了您需要分配给 Layout 然后执行以下操作:

ll.layout(0, 0, canvas.getWidth(), canvas.getHeight()); //Modify values as needed

就个人而言,我很惊讶 call 没有引发错误ll.draw()。除非您需要绘制 TextView,否则我更喜欢将文本绘制到画布上:

canvas.drawText(...)

在此处查看文档

于 2013-01-23T20:20:22.023 回答
1

LinearLayout没有附加到你的视图

尝试this.addView(ll)将您的 LinearLayout 添加到您的视图中。

于 2013-01-23T20:58:12.893 回答