首先写一个定义Button样式的XML文件:
新建Android XML文件,类型选Drawable,根结点选selector,文件名就buton_style吧。
程序自动给我们刚刚建的文件里加了selector结点,我们只需要在selector结点里写上三种状态时显示的背景图片(按下、获取焦点,正常)。
代码如下:
1
2
3
4
5
6
|
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/play_press" />
<item android:state_focused="true" android:drawable="@drawable/play_press" />
<item android:drawable="@drawable/play" />
</selector>
|
我这里获取焦点跟点击时显示的是同一张图片,必须严格照上面的顺序写,不可倒。
接下来只要在布局时写Button控件时应用到Button的Background属性即可。
1
2
3
4
|
<Button android:id="@+id/button1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/button_style"
></Button>
|
最终效果图:
点击时会变。
源代码下载:
Button_style (313)
再加上一种自定义样式方法,上面的是用图片,其实我们可以直接通过定义xml文件来实现不同的样式:
在上面的源代码基础上,只需要修改button_style文件,同样三种状态分开定义:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<gradient android:startColor="#0d76e1" android:endColor="#0d76e1"
android:angle="270" />
<stroke android:width="1dip" android:color="#f403c9" />
<corners android:radius="2dp" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
</item>
<item android:state_focused="true">
<shape>
<gradient android:startColor="#ffc2b7" android:endColor="#ffc2b7"
android:angle="270" />
<stroke android:width="1dip" android:color="#f403c9" />
<corners android:radius="2dp" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient android:startColor="#000000" android:endColor="#ffffff"
android:angle="180" />
<stroke android:width="1dip" android:color="#f403c9" />
<corners android:radius="5dip" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
</item>
</selector>
|
gradient 主体渐变 startColor开始颜色,endColor结束颜色 ,angle开始渐变的角度(值只能为90的倍数,0时为左到右渐变,90时为下到上渐变,依次逆时针类推)
stroke 边框 width 边框宽度,color 边框颜色
corners 圆角 radius 半径,0为直角
padding text值的相对位置
分享到:
相关推荐
在上面的代码中,我们定义了三种状态时显示的样式:按下时显示一个蓝色的渐变背景,获取焦点时显示一个黄色的渐变背景,正常状态时显示一个白色的渐变背景。 Android 自定义 Button 按钮显示样式可以通过使用图片或...
为了使按钮在获取焦点时变大,我们需要自定义按钮的样式。在`res/values/styles.xml`文件中,我们可以创建一个新的样式: ```xml <style name="FocusEnlargeButtonStyle" parent="Widget.AppCompat.Button"> ...
在Android开发中,自定义对话框(Dialog)是一种常见的需求,它可以提供更加个性化的用户体验。本文将详细讲解如何实现一个自定义的右上角带有“X”文字按钮的Dialog,这个按钮可以用来关闭Dialog。 首先,我们需要...
按钮的状态变化通常包括默认状态、被选中(按下)、获得焦点以及失去焦点等。为了提升用户体验,开发者经常需要根据按钮的不同状态来展示不同的视觉效果,例如切换图片。本篇将详细介绍如何在Android中实现这个功能...
在Android中,我们可以使用XML布局文件来定义按钮的样式,这包括正常状态、按下状态、焦点状态等多种视觉效果。在`res\drawable`目录下创建一个XML文件,例如`button_style.xml`,内容如下: ```xml ...
- `android:state_pressed="true"`可以设置按钮按下时的效果。 - `android:state_focused="true"`用于设置按钮获得焦点时的效果。 6. **Button的文本属性** - `android:textColor`设置文字颜色,`android:...
本资源包含三个Button按钮应用类的源代码实例,旨在帮助开发者深入理解和掌握Android中Button的使用方法。以下是关于Button按钮在Android应用中的详细知识点: 1. **创建Button** - 在XML布局文件中声明Button,...
- 高亮状态:`android:state_focused="true"`状态,通常在按钮获取焦点时生效。 - 默认状态:未按下、未聚焦时的状态。 4. **按钮点击动画**: - 使用AnimationDrawable为按钮添加点击时的动画效果,如缩放、...
在这个例子中,我们定义了三个状态:按下(pressed)、获取焦点(focused)和默认(default)。每个状态对应一个Drawable,通常是通过Shape定义的。例如,`button_pressed.xml`可能是这样的: ```xml <shape xmlns:...
在Android开发中,按钮(Button)是用户界面中不可或缺的元素,它允许用户与应用程序进行交互,触发特定的事件或动作。本篇文章将详细介绍如何在Android中创建、自定义和处理按钮,帮助初学者掌握这一核心技能。 ...
3. **实现按钮选择器**:按钮选择器(Button的Selector)是一种Drawable资源,可以根据按钮的状态(如按下、默认、焦点等)改变其背景颜色或图像。我们可以在res/drawable目录下创建一个XML文件,定义不同状态下的...
1. 自定义焦点样式:开发者可以通过定义自定义的选中状态(selected state)或者焦点状态(focused state)来改变视图在获取焦点时的视觉效果。 2. 自定义焦点转移:通过重写`onRequestFocusInDescendants()`方法,...
1. **自定义视图**:在Android中,我们可以通过继承`View`或`Button`类并重写`onDraw()`方法来自定义按钮的外观。`onDraw()`方法是绘制视图的核心,我们可以在这里使用`Canvas`对象进行绘制,实现任何我们想要的形状...
PopupWindow是Android系统提供的一个轻量级窗口,它可以显示在屏幕任意位置,并且可以自定义其内容和样式。下面我们将深入探讨这个主题。 首先,我们来讲解按钮事件的处理。在Android应用中,按钮(Button)通常...
在Android开发中,焦点移动是用户界面交互的重要组成部分,它涉及到控件间的切换,比如在按钮、文本框、列表视图等之间的导航。当用户使用物理键盘或触摸屏幕时,焦点会从一个可聚焦的视图移动到另一个,通常伴随着...
接着,我们设置了PopupWindow的宽度、高度,并使它能够获取焦点。此外,还设置了PopupWindow的进入和退出动画样式,以及触摸和点击行为。在这里,`setTouchable(true)`允许PopupWindow响应触摸事件,而`...
如果你的项目中包含一个名为`MyPopupWindow`的文件,这可能是你的`PopupWindow`布局文件,你可以根据需求自定义这个布局,添加所需的控件和样式。 总之,`PopupWindow`提供了一种灵活的方式在Android应用中创建临时...
9. **主题和样式**:Android允许自定义主题和样式,源码中可能展示了如何使用XML资源文件来定义全局样式,以便统一应用的视觉风格。 10. **权限请求**:如果注册过程中需要访问用户的某些权限(例如读写存储、网络...
- 使用`android:descendantFocusability`属性来控制布局中子View的焦点获取顺序,例如设置为`beforeDescendants`,使得Button优先获得焦点。 此外,还可以考虑以下可能的问题: 4. **Button是否可见**:如果Button...