我有下一期:
我有一个Activity,我想尝试添加Buttons,这是我的onCreate方法
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
DrawView drawView = new DrawView(this);
setContentView(drawView);
context = this;
drawView.requestFocus();
}
这是DrawView类
公共类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);
}
有人知道如何在此活动中添加按钮?我想添加一个Button来做一个动作,我完全不能!!
非常感谢你的帮助。
答案 0 :(得分:4)
只有ViewGroup(LinearLayout,RelativeLayout)可以有子。您正在做的是您将DrawView作为活动的内容视图而不是容器(ViewGroup)因此,您不能添加任何其他视图(子视图) )它。
解决问题的方法是:
假设id为父级的LinearLayout是xml布局的父级,则:
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);
答案 1 :(得分:2)
你应该创建一个xml文件,并且必须像setContentView(R.layout.filename)一样使用它,因为你试图将你的其他页面内容合并到这个xml你应该包括布局,现在你可以使用这个页面id和can实现你的任何功能。 如果您在其他xml中添加按钮然后将其包含在新的所需xml 中,那就更好了。这是一种正确的方式...希望你理解我的意思。否则你可以在developer.android.com上搜索
答案 2 :(得分:1)
您应该创建一个XML布局文件,您将使用onCreate()中的setContentView()调用与您的活动相关联。
您的布局将包含您自己的视图,按钮以及您喜欢的任何内容。