Android_开发_Day25_Button颜色形状状态
目的:
学会使用xml去配置UI,提高效率的同时还可以简化代码量。
技术:
<1> Button:
按钮的创建在xml里面就是<Button就行了,Button里常用的方法和属性如下:
方法名 | 详解 |
---|---|
text | 设置按钮的文本内容,默认是居中的 |
textColor | 设置字体颜色 |
textSize | 设置字体大小 |
background | 设置背景颜色或是背景图片 |
onClick | 设置点击事件,值是方法名,在mainActivity里面写的 |
按钮的点击事件的添加有两种方法:
1.直接在xml里面配置onClick,设置点击事件的方法,该方法默认参数是一个View类型的对象,这个参数是系统传过来的,就是被点击的那个按钮,由于系统并不知道是什么类型的按钮因此就直接使用多态用View来接收,因此在使用时要将View转换成对应的类型 。虽然该方法简单但是容易出错,不推荐大家使用。
2.在代码中获取按钮对象,然后setOnClickListener(),参数是要来监听这个事件的类,要监听这个事件就要继承一个View.OnClickListener对象,实现里面的方法,这个类可以用this,也可以new一个匿名类,或者用lambada表达式,如果有多个按钮要设置点击事件推荐使用this统一管理,只要在onClick方法中判断一下是哪个控件来调用的就可以分开写他们各自的方法了,如果他们的方法都相同,那就直接连判断都不用了。
<2> xml状态字体颜色的配置:
要对一个控件比如按钮的形状,以及正常状态和不可用状态,以及按下状态的背景颜色的配置就需要在drawable文件夹下新建一个xml文件进行配置了,每一个配置都分成一个<item,可以设置状态,有什么按压,不可用,焦点等状态,如果不设置状态就是默认状态,默认状态应放到配置文件的末尾,因为配置文件时会有顺序,从前往后,一旦配置上了,那后面的配置都会失效,因此默认状态应该放到文件的最末尾,具体配置代码示例如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--按下状态-->
<item android:color="#ff0000" android:state_pressed="true"/>
<!--无效状态的颜色-->
<item android:color="#00ff00" android:state_enabled="false"/>
<!--默认状态-->
<item android:color="#000000"/>
</selector>
文件配置好后只要再回到xml里面设置按钮的字体颜色为上面那个自己配置xml文件就行了。注意:上面的代码只能用于字体颜色的配置,因为item里面用的是color,如果要设置背景就可以用drawable属性,也就是图片,也就是说以后所有涉及到字体颜色的东西都可以这样来配置字体颜色。
<3> xml配置形状和颜色:
要对一个控件的形状进行改变,就需要配置控件的xml,配置方法跟上面的相似,同样在drawable文件夹下新建一个xml文件,然后将默认的selector改成shape,在shape中有一些形状,比如rectangle,就是控件的整体形状是矩形,现就以矩形为例来介绍其中的参数,其他的形状是一样的:
项目名称 | 属性 | 详解 |
---|---|---|
corners | radius | 设置圆角矩形圆角的半径 |
solid | color | 设置矩形填充的颜色 |
stroke | color,width,dashWidth,dashGap | 设置线框颜色,设置线框粗细,设置线框为虚线并设置虚线的宽度,设置虚线间隔 |
gradient | startColor,centerColor,endColor,gradientRadius,type | 设置渐变的起始,中间,结束的颜色,设置渐变半径(仅当type为radial时可用),设置渐变的类型,有线性,有辐射型,有扫描型。 |
技术如何使用:
编写一个程序实现两个按钮来回出现,即当我点击一个按钮时另一个按钮出现,这个按钮消失,当我点击另一个按钮时另一个按钮消失这个按钮出现,分析,首先我们需要在xml里面配置两个按钮,然后再代码里设置点击事件,彼此都设置点击事件然后彼此唤醒对方,xml里面的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="20dp"/>
<solid android:color="#61D4FE"/>
</shape>
xml配置形状和颜色
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_color"
android:text="完成"
android:textSize="20sp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_color"
android:text="编辑"
android:layout_alignParentRight="true"
android:textSize="20sp"/>
xml里面配置按钮
下面是具体实现的代码:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button edit;
Button done;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = findViewById(R.id.bt_edit);
done = findViewById(R.id.bt_done);
edit.setOnClickListener(this);
done.setOnClickListener(this);
done.setVisibility(View.INVISIBLE);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.bt_edit){
view.setVisibility(View.INVISIBLE);
view.setEnabled(false);
done.setVisibility(View.VISIBLE);
done.setEnabled(true);
}else {
view.setVisibility(View.INVISIBLE);
view.setEnabled(false);
edit.setVisibility(View.VISIBLE);
edit.setEnabled(true);
}
}
}
实际使用效果:


总结:
本节内容都比较简单,主要是按钮的监听事件方法主要是两种,以及配置形状颜色等代码。
网友评论