gpt4 book ai didi

android - 添加按钮到 android.view.View

转载 作者:太空狗 更新时间:2023-10-29 16:06:46 24 4
gpt4 key购买 nike

我有下一期:

我有一个 Activity ,我想尝试在其中添加按钮,这是我的 onCreate 方法

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

DrawView drawView = new DrawView(this);
setContentView(drawView);

context = this;

drawView.requestFocus();

}

这是 DrawView 类

公共(public)类 DrawView 扩展 View 实现 OnTouchListener {

public static final String TAG = "DrawView";

private List<List<Point>> listaPuntos = null;
private List<Paint> listaPaints = null;

private int paintActual = 0;

public DrawView(Context context) {
super(context);
setFocusable(true);
setFocusableInTouchMode(true);

listaPaints = new ArrayList<Paint>();
listaPuntos = new ArrayList<List<Point>>();

this.setOnTouchListener(this);
this.setBackgroundColor(Color.WHITE);

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
paint.setColor(Color.BLACK);
listaPaints.add(paint);

}

@Override
public void onDraw(Canvas canvas) {

for(int i=0; i<listaPaints.size(); i++){
Paint paint = listaPaints.get(i);
Point punto = null;
if(listaPuntos.size()!=0 && listaPuntos.size()>i){
List<Point> puntos = listaPuntos.get(i);
for (Point point : puntos) {

if(punto == null){
punto = point;
}
canvas.drawLine(point.x, point.y, punto.x, punto.y, paint);
punto = point;
}
}
}
}

@Override
public boolean onTouch(View view, MotionEvent event) {

if(event.getAction() != MotionEvent.ACTION_UP){
Point point = new Point();
point.x = event.getX();
point.y = event.getY();
point.paintPunto = paintActual;
if(listaPuntos.size()<=paintActual){
listaPuntos.add(new ArrayList<Point>());
}
listaPuntos.get(paintActual).add(point);
invalidate();
return true;
}else{
paintActual++;
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
paint.setColor(Color.BLACK);
listaPaints.add(paint);
}
return super.onTouchEvent(event);
}

有人知道如何将按钮添加到此 Activity 吗?我想添加一个按钮来执行操作,但我完全不能!!

非常感谢您的帮助。

最佳答案

只有 ViewGroup(LinearLayout,RelativeLayout) 可以有 child 。你正在做的是将 DrawView 作为 Activity 的内容 View ,它不是容器 (ViewGroup) 因此,你不能添加任何其他 View (child ) 给它。
您的问题的解决方案是:

  • 创建一个包含其他 View 或为空的 ViewGroup 作为父级(LinearLayout、RelativeLayout 等)的 xml 布局文件。
  • 创建 DrawView 的一个实例。
  • 将此实例添加到 ViewGroup
  • 如果您想动态添加 View ,则类似地创建其他 View 的实例并将它们添加到父 View 。下面是示例代码:

假设id为parent的LinearLayout是xml布局的parent:

LinearLayout parent = (LinearLayout)findViewById(R.id.parent);
//creating instance of custom view
DrawView drawView = new DrawView(this);
//adding custom view as the first child
parent.addView(drawView,0);
//adding button dynamically
Button btn = new Button(this);
btn.setText("Ok");
parent.addView(btn,1);

关于android - 添加按钮到 android.view.View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12261748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com