Android的点击事件

事件一共有四种写法分别是:

  • (不推荐)结合layout文件声明方法

  • 内部实现类

  • Activity实现OnClickLitener

  • 匿名内部实现类(推荐) 

结合layout文件声明方法实现点击事件

先在LoginActivity.java中加入btnClick方法

public void btnClick(View view){
    //参数 Context, text, duration
    //上下文, 要提示的信息, 提示显示的时长
    Toast.makeText(LoginActivity,this, "提示:你点击了按钮",Toast.LENGTH.SHORT).show();
}

然后在布局文件activity_login.xml中加入

<!--登录按钮-->
<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:background="@color/colorWhite"
    android:textSize="22sp"
    android:onClick="btnClick"
    android:text="登 录"/>

内部实现类完成点击事件

控件缩写前缀
TextViewtv
EditTextetet
ImageViewiv
Button/RadioButton/ImageButtonbtn/rb/ib
RelativeLayout/LinearLayout/FrameLayoutrl/ll/fl
ListViewlv
WebViewwv
CheckBoxcb
ProgressBarpb

先给要设置点击事件的控件设置id

<!--登录按钮-->
<Button
    android:id="@+id/btn_login_submit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:background="@color/colorWhite"
    android:textSize="22sp"
    android:text="登 录"/>

之后在LoginActivity这个类中实现一个ClickListener

Class ClickListener implements View.onClickListener{
    @Override
    public void onClick(View v){
        int id = v.getId();
        switch(id) {
            case R.id.btn_login_submit:
                Toast.makeText(LoginActivity.this,"提示:你点击了按钮,内部实现类",Toast.LENGTH.LONG).show();
                break;
        }
    }
}

 之后在LoginActivity的Oncreate中创建内部实现类的对象并设置点击事件

@Override
protected void onCreate(@Nullable Bundle savedInstanceState){
    super.OnCreate(savedInstanceState);
    //设置布局
    setContentView(R.layout.activity_login);
    //获取控件
    Button btnSubmit = findViewById(R.id.btn_login_submit);
    //②创建内部实现类
    ClickListener clickListener = new ClickListener();
    //②设置点击事件
    btnSubmit.setOnClickListener(clickListener);
}

Activity实现OnClickListener

public class LoginActivity extends AppCompatActivity implements View.OnClickListener{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置布局
        setContentView(R.layout.activity_login);
        //获取控件
        Button btnSubmit = findViewById(R.id.btn_login_submit);
        //设置点击事件
        btnSubmit.setOnClickListener(this);
    }
    
    // 重载OnClickListener
    @Override
    public void onClick(View view){
        switch(view.getId()){
            case R.id.btn_login_submit:
                Toast.makeText(LoginActivity.this, 
                               "提示:你点击了按钮,Activity实现了OnClickLitener",Toast.LENGTH_LONG).show();
        }
    }
}

匿名内部实现类

public class LoginActivity extends AppCompatActivity{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState){
        super.onCreate(savedInstanceState){
            
            //设置布局
            setContentView(R.layout.activity_login);
            
            //获取控件
            Button btnSubmit = findViewById(R.id.btn_login_submit);
            
            //匿名内部类实现的方式
            btnSubmit.setOnClickListener(new View.OnClickListener){
                @Override;
                public void onClick(View view){
                    Toast.makeText(LoginActivity.this, 
                                   "提示:你点击了按钮,匿名的内部实现类",Toast.LENGTH_LONG).show();
                }
            }
        }
    }
}

RadioButton的基本使用

RadioGroup  常用属性

属性说明
getChildCount()获取按钮组中单选按钮数量
getChildAt()获取按钮组中指定索引的单选按钮
check()设置单选按钮 ID 进行选中

RadioButton 常用属性

属性说明
isChecked()判断单选按钮是否选中
setChecked()设置选中状态

简单的案例

简单的构造
<!-- RadioGroup -->
<RadioGroup
    android:id="@+id/radioGroup"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:checkedButton="@id/man">
    <!-- RadioButton -->
    <RadioButton
        android:id="@+id/man"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="男"
        android:textSize="16sp"/>
    <!-- RadioButton -->
    <RadioButton
        android:id="@+id/woman"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="女"
        android:textSize="16sp"/>
    <!-- RadioButton -->
    <RadioButton
        android:id="@+id/none"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="无"
        android:textSize="16sp"/>
</RadioGroup>

点击事件的构成

RadioGroup radgroup = (RadioGroup) findViewById(R.id.radioGroup);
    //第一种获得单选按钮值的方法 
    //为radioGroup设置一个监听器:setOnCheckedChanged() 
    radgroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
      @Override
      public void onCheckedChanged(RadioGroup group, int checkedId) {
        RadioButton radbtn = (RadioButton) findViewById(checkedId);
        Toast.makeText(getApplicationContext(), "按钮组值发生改变,你选了" + radbtn.getText(), 		Toast.LENGTH_LONG).show();
     }
  });

CheckBox的基本使用

基本属性

属性说明
android:autoText如果设置,则指定此TextView具有文本输入法,并自动纠正一些常见的拼写错误。
android:drawableBottom这是要在文本下方绘制的图形。
android:drawableRight这是要在文本右侧绘制的图形。
android:editable如果设置,则指定此TextView具有输入法。
android:text这是要显示的文本
android:background这是一个可绘制的背景。
android:contentDescription这定义了简短描述视图内容的文本。
android:id这提供了该视图的标识符名称。
android:onClick这是单击该视图时在该视图上下文中要调用的方法的名称。
android:visibility这控制了视图的初始可见性。

简单的案例

xml构成
<CheckBox  
        android:id="@+id/cb_one"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_above="@+id/button1"  
        android:layout_alignLeft="@+id/linearLayout1"   
        android:text="牛仔"/>  
  
<CheckBox  
        android:id="@+id/cb_two"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignBaseline="@+id/checkbox3"  
        android:layout_alignBottom="@+id/checkbox3"  
        android:layout_marginLeft="27dp"  
        android:layout_toRightOf="@+id/checkbox3"  
        android:text="面包" />  

<CheckBox  
        android:id="@+id/cb_three"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignBaseline="@+id/checkbox1"  
        android:layout_alignBottom="@+id/checkbox1"  
        android:layout_toRightOf="@+id/button1"  
        android:text="黄油" /> 

点击事件的构成

public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener{
  private CheckBox cb_one;
  private CheckBox cb_two;
  private CheckBox cb_three;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    cb_one = (CheckBox) findViewById(R.id.cb_one);
    cb_two = (CheckBox) findViewById(R.id.cb_two);
    cb_three = (CheckBox) findViewById(R.id.cb_three);
    cb_one.setOnCheckedChangeListener(this);
    cb_two.setOnCheckedChangeListener(this);
    cb_three.setOnCheckedChangeListener(this);
 }
  @Override
  public void onCheckedChanged(CompoundButton compoundButton, boolean b){
   if(compoundButton.isChecked())
		Toast.makeText(this,compoundButton.getText().toString(),Toast.LENGTH_SHORT).show();
 }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值