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;
}
}