Button按钮及其点击事件方式

Button按钮

框架结构:

这里写图片描述

一、继承结构

这里写图片描述

  • 由于Button是继承于TextView的,因此,TextView中的常用属性,Button也能使用

二、两种点击方式

方式一:

 1. 在布局文件中给Button按钮添加onClick属性,属性值为任意字符串(此字符串用于设置按钮被点击时运行的方法的方法名)。
 <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="登录"
        android:id="@+id/but_login"
        />
2.在java代码中(在显示了此Button的Activity子类中)创建onClick属性中指定的方法
/*
 * 设置按钮点击事件的方式一:通过onClick属性+自定义方法实现
 * */
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    /*
     * 创建按钮被点击时运行的方法
     * 要求如下:
     * 1. 该方法必须是public void
     * 2. 该方法的方法名称必须与onClick中的属性值完全一致
     * 3. 该方法的参数列表必须有且只有一个View类型的参数
     * 
     * 参数的作用:参数代表的是当前被点击的控件对象
     * */
    public void click(View v) {

        //v.getId()方法用于获取当前被点击的按钮对应的id属性的值
        switch (v.getId()) {
        case R.id.but_login:
            System.out.println("登录按钮被点击啦!!!!!!");
            break;

        case R.id.but_register:
            System.out.println("注册按钮被点击啦!!!!!!########");
            break;
        }

    }
}

方式二:

获取控件对象+通过控件对象调用setOnClickListener方法设置点击事件
根据setOnClickListener方法参数的不同传递方式分为以下3小种:

a. 通过匿名内部类方式

  public class TwoActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_two);
        //获取按钮对象
        Button but = (Button) findViewById(R.id.but1);
        //通过按钮对象设置点击事件
        but.setOnClickListener(new OnClickListener() {

            //一旦按钮被点击,就会运行下方的onClick方法
            @Override
            public void onClick(View v) {
                // android中的输出:作用等同于System.out.println
                /*
                 * 参数1: 稍后会被显示在LogCat的Tag标签中
                 * 参数2: 稍后会被显示在LogCat的Text标签中
                 * */
                Log.i("oye", "我是安卓的打印@@@@ ");
            }
        }); 
    }
}

b. 让当前类实现onClickListener接口,在setOnClickListener方法中传递当前类对象.

public class ThreeActivity extends Activity implements OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.activity_two);
        //获取按钮对象
        Button but = (Button) findViewById(R.id.but1);
        //通过按钮对象设置点击事件
        but.setOnClickListener(this);       
    }
    //一旦按钮被点击,就会运行以下onclick方法
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub      
    }
}

c. 创建一个onClickListener的实现子类,在setOnClickListener方法中传递子类对象.

public class FourActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_two);
        //获取按钮对象
        Button but = (Button) findViewById(R.id.but1);
        //通过按钮对象设置点击事件
        but.setOnClickListener(new MyListener());

    }

    class MyListener implements OnClickListener {

        //按钮一旦被点击,就会运行以下onClick方法
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }

    }
}
发布了34 篇原创文章 · 获赞 3 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/The_king_of_Asia/article/details/53998218