文章目录
一、基础属性
属性 | 作用 |
---|---|
android:id="@+id/button2" | id |
android:layout_width=“match_parent” | 宽度 |
android:layout_height=“wrap_content” | 高度 |
android:text=“文本” | 文本(强制转化成大写) |
android:textAllCaps=“false” | 文本不强制转化成大写 |
android:textColor="@android:color/white" | 文字颜色 |
android:textSize=“25sp” | 文字大小 |
android:background="@drawable/button" | 背景图片 |
二、点击事件
1.指定Button的onClick属性方式
(1)首先在layout文件中指定onClick属性
android:onClick="click"
<!--click是你的函数名-->
【layout文件】
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
>
<Button
android:id="@+id/btn1"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="Button"
android:onClick="click"/>
</RelativeLayout>
(2)然后在Activity中实现这个click方法
//注意参数必须是View v
//必须是public
//返回值必须是void
public void click(View v)
{
...
}
【Activity文件】
public class MainActivity extends AppCompatActivity {
private TextView tv_show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
tv_show= this.<TextView>findViewById(R.id.textView);
//在onCreate方法中给tv_show变量赋值
//this.<TextView>是强制类型转换,这是快捷键打出来的样子,alt+enter
}
//注意这是click,你自己的方法名
public void click(View v)
{
tv_show.setText("按钮被点击了");
}
}
2.点击事件“匿名内部类方式”
在Activity中添加匿名内部类
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
【Activity文件】
public class MainActivity extends AppCompatActivity {
private TextView tv_show;
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
tv_show= this.<TextView>findViewById(R.id.textView);
btn1=this.<Button>findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv_show.setText("按钮被点击了");
Toast.makeText(MainActivity.this, "failure", Toast.LENGTH_LONG).show();
//参数是this,还是.class的问题
//如果这是指定Button的onClick属性方式的方法,所以直接写this就行
//要是匿名内部类的话,就得写成MainActivity.this的形式,因为this不是指MainActivity.this,而是指这个匿名内部类
//MainActivity.this的形式对这两个都通用
}
});
}
}
3.点击事件“接口方式”
(1)首先当前Activity实现OnClickListener接口
public class MainActivity extends AppCompatActivity implements View.OnClickListener
(2)然后实现接口方法
@Override
public void onClick(View v) {
tv_show.setText("按钮被点击了");
}
(3)最后绑定到button上
btn1.setOnClickListener(this);
【Activity文件】
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//在打出View.OnClickListener后按alt+enter,补全onClick方法
private TextView tv_show;
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
tv_show= this.<TextView>findViewById(R.id.textView);
btn1= this.<Button>findViewById(R.id.btn1);
btn1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
tv_show.setText("按钮被点击了");
}
/*多按钮点击写法
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.button1:
{
break;
}
case R.id.button2:
{
break;
}
}
*/
}
三、事件触发背景
1.效果
用于不同按钮状态的不同图像或颜色
2.实现
(1)创建一个XML文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/button_default" />
</selector>
这定义了一个可绘制资源,它将根据按钮的当前状态更改其图像。
- 第一个定义按下按钮(激活)时使用的位图。
- 第二个定义了当按钮处于默认状态时使用的位图(即不按)。
注意:元素的顺序很重要。当引用此drawable时,将按 顺序遍历元素以确定哪个元素适合当前按钮状态。因为默认位图是最后一个,android:state_pressed
被评估为false。
PS:一个好像失效的按钮状态
<item android:drawable="@drawable/button_focused"
android:state_focused="true" />
第二个定义按钮聚焦时使用的位图(当使用轨迹球或方向键突出显示按钮时)。
(2)只需将XML文件应用为按钮背景
android:background="@drawable/btn_background"
XML文件名为btn_background.xml,在drawable文件夹下(随便放,只要引用对就ok)
四、设计效果
https://blog.csdn.net/tyzlmjj/article/details/50096777