2.3.3 Button
Button 是 UI 布局中的按钮,是最常用的组件之一。按钮最重要的作用是与用户进行交互。用户通过点击按钮来完成特定的操作。Button组件继承自Text类,并没有自己特定的XML属性,它的属性和Te x t组件一样。
本节不再重复介绍Te x t组件的属性,主要介绍按钮的点击事件。
下面通过一个案例来介绍Button组件的使用。通过点击“改变颜色”按钮,改变Te x t组件的字体颜色。页面的预览效果如图2-38所示。
图2-38 点击按钮改变Text组件的字体颜色
这个案例为按钮增加了一些样式,新增样式也会在这一节中进行介绍,下面来看布局的代码。test.xml文件的代码如下。
首先,为Text组件和Button组件都增加了ohos:id属性,它的属性值写法是固定的“$+id:组件Id”。“$+id:”是系统规定的语法,“组件Id”由开发者自己定义,然后就可以通过组件Id来获得组件的实例,从而对其进行操作。
Button组件的ohos:background_element属性值为$graphic:background_button。这是一个自定义的属性文件,这个文件把Button组件的样式变成了圆角矩形、蓝色背景。该文件在与 layout 同级的 graphic 目录下,命名为 background_button.xml,如图2-39所示,可以通过设置ohos:background_element属性的属性值为$graphic:background_button来引用这个文件。
图2-39 graphic目录下的自定义样式
下面来看background_button.xml文件的内容。
这是一个样式文件,最外层节点是<shape>标签,它的 ohos:shape 属性值被设置为 rectangle,表示该样式的形状为矩形。里面有两个子标签,其中<corners>指定了矩形圆角的大小,ohos:radius属性的含义是设置组件圆角的大小,这个数值越大,代表圆角越大。<solid>指定了矩形背景的填充颜色,通过ohos:color 属性设置背景颜色。这两个属性把按钮变成蓝色圆角矩形的样式。下面再来看Java代码如何对按钮设置点击事件。
在这段代码中,通过findComponentById(int resID)方法来获取布局页面中的组件实例,在组件设置了 ohos:id 属性后,就可以通过 ResourceTable.type_name来引用。在这个例子中使用ResourceTable.Id_btn获取Button组件的Id,使用 ResourceTable.Id_content 获取 Text 组件的 Id,最后通过findComponentById()方法获取组件实例。findComponentById()方法的返回值为Component对象,使用时需要将结果强制转化为对应的组件。
在获取到组件实例后,通过btn.setClickedListener()方法为按钮增加点击事件,实现点击事件 Component.ClickedListener()方法中的 onClick()方法。在这个方法内,通过text.setTextColor()方法来重新改变Text组件中字体的颜色。颜色对象直接通过new Color(Color.rgb(127,255,170))方法得到,颜色色值传入的是RGB格式的十进制数。