首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向android java代码添加按钮

向android java代码添加按钮
EN

Stack Overflow用户
提问于 2013-05-10 02:11:47
回答 3查看 1.9K关注 0票数 0

如何在android java代码中添加按钮?它是主要的活动java代码:

代码语言:javascript
复制
    package com.example.pafima_trial;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;

    public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(new SingleTouchEventView(this, null));
//  setContentView(R.layout.activity_main);


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
        }

    }

它是SingleTouchEventView.java

代码语言:javascript
复制
    public class SingleTouchEventView extends View {
      private Paint paint = new Paint();
      private Path path = new Path();
      boolean touched = false;
      float x =0;
      float y =0;
      float [] inputx = new float[200];
      float [] inputy = new float[200];
      String [] direction = new String [200];
      int count =0;
      int dcount =0;

      public SingleTouchEventView(Context context, AttributeSet attrs) {
        super(context, attrs);
        paint.setAntiAlias(true);
        paint.setStrokeWidth(6f);
        paint.setColor(Color.BLACK);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeJoin(Paint.Join.ROUND);
      }

      @Override
      protected void onDraw(Canvas canvas) {
        canvas.drawPath(path, paint);
      }

      @Override
      public boolean onTouchEvent(MotionEvent event) {

        float eventX = event.getX();
        float eventY = event.getY();

        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
          path.moveTo(eventX, eventY);
          return true;
        case MotionEvent.ACTION_MOVE:
          path.lineTo(eventX, eventY);

    touched=true;
          inputx[count]=eventX;
          inputy[count]=eventY;
          System.out.println("x is: "+ inputx[count]);
          System.out.println("y is: "+inputy[count]);
          if(count>=2 && count%2 != 1){

              if(inputx[count-2]-inputx[count]<=-15){
          if(inputy[count-2]-inputy[count]<=-15){
              direction[dcount]="right down";
              dcount++;
          }
          if(inputy[count-2]-inputy[count]>15){
              direction[dcount]="right up";
              dcount++;
          }
          if(-14<=inputy[count-2]-inputy[count] && inputy[count-2]-inputy[count]<=15 ){
              direction[dcount]="right";
              dcount++;
          }
      }

      if(inputx[count-2]-inputx[count]>15){
          if(inputy[count-2]-inputy[count]>=15){
              direction[dcount]="left up";
              dcount++;
          }
          if(inputy[count-2]-inputy[count]<-15){
              direction[dcount]="left down";
              dcount++;
          }
          if(15>inputy[count-2]-inputy[count] && inputy[count-2]-inputy[count]>=-15 ){
              direction[dcount]="left";
              dcount++;
          }
      }

      if (inputx[count-2]-inputx[count]<=15 && inputx[count-2]-inputx[count]>-15){
          if(inputy[count-2]-inputy[count]<-15){
              direction[dcount]="down";
              dcount++;
          }
          if(inputy[count-2]-inputy[count]>=15){
              direction[dcount]="up";
              dcount++;
          }

      }
  }
  count++;
  break;
case MotionEvent.ACTION_UP:
    System.out.println("count is "+count);
  break;
default:
  return false;
}
    int a =0;
    while(a<dcount){
        System.out.println("direction["+a+"] is: "+ direction[a]);

        a++;
    }
// Schedules a repaint.
invalidate();
return true;
      }


    } 

我无法在主活动java代码中添加boutton,也无法将活动主xml文件设置为内容视图。另外,我可以在java代码中给出xml文件的链接吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-10 02:22:35

您可以使用getWindow().addContentView在主活动布局中添加另一个视图,如下所示:

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(new SingleTouchEventView(this, null));
    //add xml layout to Activity Window
    LayoutInflater inflater = getLayoutInflater();
    getWindow().addContentView(inflater.inflate(R.layout.activity_main, null),
                              new ViewGroup.LayoutParams(
                               ViewGroup.LayoutParams.MATCH_PARENT,
                               ViewGroup.LayoutParams.MATCH_PARENT));

}
票数 0
EN

Stack Overflow用户

发布于 2013-05-10 02:17:24

您可以尝试将main_activity.xml设置为内容视图,通过id找到相对布局,然后使用realtivelayout.addView( SingleTouchEventView(this,null))进行添加。然后您就得到了xml文件和singletoucheventview。

在xml文件中,找到您的RelativeLayout并添加:

代码语言:javascript
复制
android:id="@+id/relativelayout"

这只是一个例子。之后,转到您的类并创建对象:

代码语言:javascript
复制
RelativeLayout relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout);

在那之后你就可以打电话给

代码语言:javascript
复制
relativeLayout.addView(View);
票数 0
EN

Stack Overflow用户

发布于 2013-05-10 02:27:54

SingleTouchEventView view=新SingleTouchEventView(SingleTouchEventView,空)

代码语言:javascript
复制
 setContentView(view);
 Button b = new Button(MainActivity.this);
 view.addView(b);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16468291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档