按钮Button

发布于 2022-04-03  150 次阅读


Button(按钮)继承自TextView,在Android开发中,Button是常用的控件,用起来也很简单,你可以在界面xml描述文档中定义,也可以在程序中创建后加入到界面中,其效果都是一样的。不过最好是在xml文档中定义,因为一旦界面要改变是话,直接修改一下xml就行了,不用修改Java程序,并且在xml中定义层次分明,一目了然。

XML属性方法说明
android:clickablesetClickable(boolean clickable)设置是否允许点击。
clickable=true:允许点击
clickable=false:禁止点击
android:backgroundsetBackgroundResource(int resid)通过资源文件设置背景色。
resid:资源xml文件ID
按钮默认背景为android.R.drawable.btn_default
android:textsetText(CharSequence text)设置文字
android:textColorsetTextColor(int color)设置文字颜色
android:onClicksetOnClickListener(OnClickListener l)设置点击事件
Button 支持的 XML 属性及相关方法

.

实例:

1、设置背景图

XML布局

<?xml version="1.0" encoding="utf-8"?>
<Button android:id="@+id/button"
     android:background="@drawable/ic_launcher"/>

Java代码

//方法一:
button.setBackground(ContextCompat.getDrawable(this, R.drawable.ic_launcher));
//方法二:
button.setBackgroundResource(R.drawable.ic_launcher);

.

2、设置背景色

XML布局

<?xml version="1.0" encoding="utf-8"?>
<Button android:id="@+id/button"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="按钮"
     android:background="#ff0000"/>

Java代码

//方法一:
button.setBackgroundColor(getResources().getColor(R.color.colorAccent));
//方法二:
button.setBackgroundColor(Color.parseColor("#F8F8FF"));

.

3. 设置背景样式

我们可以使用drawable中的xml文件来改变按钮的样式

shape样式:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">   
    <corners android:radius="6dp" />
    <solid android:color="#ffffff" />
    <padding android:bottom="10dp" android:left="20dp" android:right="20dp" android:top="10dp" />
    <stroke android:width="3dp" android:color="#99CCFF" />      
</shape>

xml布局:

<Button android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="按钮"
    android:background="@drawable/btn_bg"/>

Java代码:

//方法一:
button.setBackground(ContextCompat.getDrawable(this, R.drawable.btn_bg));
//方法二:
button.setBackgroundResource(R.drawable.btn_bg);

.

4、点击事件

① 实现OnClickListener接口

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_main);
        Button btn = (Button) findViewById(R.id.btn);
        //绑定监听
        btn.setOnClickListener(this);
    }

    //重写onClick()方法
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
    }

}

② 匿名内部类

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_main);
        Button btn = (Button) findViewById(R.id.btn);
        //使用匿名内部类
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

③ 定义内部类

XML布局:

<Button  android:id="@+id/btn"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:onClick="click"
      android:text="点击事件" />

Java代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_main);
        Button btn = (Button) findViewById(R.id.btn);
    }
    
    public void click(View v) {
        Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
    }   

//Toast.LENGTH_SHORT 是显示时长
}


谢谢你能看完呀~~~