事件一共有四种写法分别是:
-
(不推荐)结合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="登 录"/>
内部实现类完成点击事件
控件 | 缩写前缀 |
---|---|
TextView | tv |
EditTextet | et |
ImageView | iv |
Button/RadioButton/ImageButton | btn/rb/ib |
RelativeLayout/LinearLayout/FrameLayout | rl/ll/fl |
ListView | lv |
WebView | wv |
CheckBox | cb |
ProgressBar | pb |
先给要设置点击事件的控件设置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();
}
}