Android 如何以编程方式将文本视图放置在自定义视图上?

Android 如何以编程方式将文本视图放置在自定义视图上?,android,Android,在我的应用程序中,我设计了一个自定义视图,下面是代码 public class Tunnel extends View implements View.OnTouchListener { Paint paint = new Paint(); public Tunnel(Context context) { super(context); setOnTouchListener(this); } @Override pub

在我的应用程序中,我设计了一个自定义视图,下面是代码

public class Tunnel extends View implements View.OnTouchListener {

    Paint paint = new Paint();

    public Tunnel(Context context) {
        super(context);
        setOnTouchListener(this);
    }

    @Override
    public void onDraw(Canvas canvas) {
        paint.setColor(Color.RED);
        for (int x = 0; x < canvas.getWidth(); x++) {
            canvas.drawLine(x, (float) upperBound(x), x, (float) lowerBound(x), paint);
        }
        setBackgroundColor(Color.BLACK);
    }

    private double upperBound(double x) {
        return 50 * Math.sin(x / 50) + 400;
    }

    private double lowerBound(double x) {
        return 50 * Math.sin(x / 50) + 600;
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return false;
    }
}
但我不知道下一步该写什么。如何将textView应用于我的视图? 提前感谢

试试看

 public Tunnel(Context context) {
        super(context);
        setOnTouchListener(this);
        TextView tv = new TextView(getContext());
        tv.setX(200);
        tv.setY(200);
        tv.setText("Text");
        TheCustomView.addView(tv);
    }

我从线性布局继承了我的自定义视图,将其设置为onDraw方法,它对我很有用

public class Tunnel extends LinearLayout implements View.OnTouchListener {

        Paint paint = new Paint();

        TextView tv;

        public Tunnel(Context context) {
            super(context);
            setOnTouchListener(this);
            setWillNotDraw(false);
            tv = new TextView(getContext());
            tv.setX(450);
            tv.setY(800);
            tv.setTextSize(20f);
            tv.setTextColor(Color.WHITE);
            addView(tv);
        }

        @Override
        public void onDraw(Canvas canvas) {
            paint.setColor(Color.RED);
            for (int x = 0; x < canvas.getWidth(); x++) {
                canvas.drawLine(x, (float) upperBound(x), x, (float) lowerBound(x), paint);
            }
              setBackgroundColor(Color.BLACK);
        }

        private double upperBound(double x) {
            return 50 * Math.sin(x / 50) + 400;
        }

        private double lowerBound(double x) {
            return 50 * Math.sin(x / 50) + 600;
        }

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return false;
        }
    }

是的,我以为会是这样的,但我的计划是什么?我这里没有定义布局
public class Tunnel extends LinearLayout implements View.OnTouchListener {

        Paint paint = new Paint();

        TextView tv;

        public Tunnel(Context context) {
            super(context);
            setOnTouchListener(this);
            setWillNotDraw(false);
            tv = new TextView(getContext());
            tv.setX(450);
            tv.setY(800);
            tv.setTextSize(20f);
            tv.setTextColor(Color.WHITE);
            addView(tv);
        }

        @Override
        public void onDraw(Canvas canvas) {
            paint.setColor(Color.RED);
            for (int x = 0; x < canvas.getWidth(); x++) {
                canvas.drawLine(x, (float) upperBound(x), x, (float) lowerBound(x), paint);
            }
              setBackgroundColor(Color.BLACK);
        }

        private double upperBound(double x) {
            return 50 * Math.sin(x / 50) + 400;
        }

        private double lowerBound(double x) {
            return 50 * Math.sin(x / 50) + 600;
        }

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return false;
        }
    }