关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法。
首先android的selector是在drawable/xxx.xml中配置的。
先看一下listview中的状态:
把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。
drawable/list_item_bg.xml
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景图片-->
<item android:drawable="@drawable/pic1" />
<!-- 没有焦点时的背景图片-->
<item android:state_window_focused="false" android:drawable="@drawable/pic1" />
<!-- 非触摸模式下获得焦点并单击时的背景图片-->
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/pic2" />
<!-- 触摸模式下单击时的背景图片-->
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/pic3" />
<!--选中时的图片背景-->
<item android:state_selected="true" android:drawable="@drawable/pic4" />
<!--获得焦点时的图片背景-->
<item android:state_focused="true" android:drawable="@drawable/pic5" />
</selector>
使用些xml文件:第一种是在listview中配置android:listSelector="@drawable/list_item_bg"
或者在listview的item中添加属性android:background=“@drawable/list_item_bg"即可实现,或者在java代码中使用:Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg);
ListView.setSelector(drawable);同样的效果。
但是这样会出现列表有时候为黑的情况,需要加上:android:cacheColorHint="@android:color/transparent"
使其透明。
其次再来看看Button的一些背景效果:
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。
以下就是配置button中的文字效果:
drawable/button_font.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="#FFF" />
<item android:state_focused="true" android:color="#FFF" />
<item android:state_pressed="true" android:color="#FFF" />
<item android:color="#000" />
</selector>
Button还可以实现更复杂的效果,例如渐变啊等等。
drawable/button_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<!-- 定义当button 处于pressed 状态时的形态。-->
<shape>
<gradient android:startColor="#8600ff" />
<stroke android:width="2dp" android:color="#000000" />
<corners android:radius="5dp" />
<padding android:left="10dp" android:top="10dp"
android:bottom="10dp" android:right="10dp" />
</shape>
</item>
<item android:state_focused="true">
<!-- 定义当button获得focus时的形态-->
<shape>
<gradient android:startColor="#eac100" />
<stroke android:width="2dp" android:color="#333333" color="#ffffff" />
<corners android:radius="8dp" />
<padding android:left="10dp" android:top="10dp"
android:bottom="10dp" android:right="10dp" />
</shape>
</item>
</selector>
最后,需要在包含button的xml文件里添加两项。假如是main.xml 文件,我们需要在<Button />里加两项。
android:focusable="true"
android:backgroud="@drawable/button_color"
这样当你使用Button的时候就可以甩掉系统自带的那黄颜色的背景了,实现个性化的背景,配合应用的整体布局非常之有用啊
分享到:
相关推荐
本文将深入探讨如何自定义一个Button,使其在不同状态(正常、按下、获取焦点)下呈现出不同的显示样式。我们将通过创建一个自定义的Button类,利用XML属性和Java代码来实现这一功能。 首先,我们需要创建一个新的...
在Android开发中,单选按钮(RadioButton)是用户界面中常用的一种组件,它通常用于提供一组互斥的选择项,用户只能选择其中的一项。本教程将深入探讨如何在Android中自定义RadioButton,使其满足特定的设计需求。 ...
android studio 自定义button边框,角度,渐变颜色按下时改变样式, 以及基础动画,为image view添加旋转,下移,渐变等样式,使用timer handler button进行控制。
然而,系统默认的Button样式可能无法满足所有设计需求,因此,开发者常常需要自定义Button的各种风格,包括颜色、形状、边框、文字样式等。本文将深入探讨如何在Android中自定义各种风格的Button。 首先,我们可以...
总的来说,自定义Button效果涵盖了Android UI设计的多个方面,包括样式、Drawable、自定义View、动画、属性、触摸反馈等。通过熟练掌握这些技术,开发者能够创造出极具吸引力且用户体验优秀的Android应用。
6. **库和工具**:Android社区提供了许多开源库,如`ShapedButton`或`MaterialButton`,它们可以帮助开发者轻松实现自定义按钮样式,同时提供了更多高级特性,如动画效果。 在提供的压缩包文件`AndroidDemoCNG`中,...
在自定义Button时,可能要添加的新特性包括但不限于:改变按钮的背景、文字颜色、边框、阴影、点击效果、字体样式等。这通常通过重写`onDraw()`方法或者使用自定义属性(attrs.xml)和样式资源来实现。 4. ** ...
本文将深入探讨如何在Android中创建一个万向自定义Button,即一个可以展示无极量的按钮。这个自定义Button适用于那些需要显示动态数值或进度的场景,比如游戏中的积分显示或者进度条。 首先,我们从创建一个新的...
本篇将深入探讨如何在Android中自定义`Switch Button`,打造既漂亮又美观的滑动开关。 首先,自定义`Switch Button`涉及的主要方面包括布局设计和动画效果。布局设计通常通过XML实现,可以调整开关的背景、文字颜色...
3. **调整RadioButton的按钮样式**:可以进一步通过`android:button`属性来自定义按钮的显示效果。 #### 创建Drawable资源文件 创建Drawable资源文件通常是通过XML文件来实现的,这些文件一般位于项目的`res/...
在Android开发中,自定义控件是提升...这种方法允许我们在不改变原有按钮样式的情况下,轻松添加长按行为,为用户提供更多的交互可能性。同时,自定义按钮类也可以根据需求扩展其他功能,比如动画效果、触摸反馈等。
本教程将深入探讨如何在Android中创建一个自定义的图片按钮,它不仅美观,而且功能实用。 首先,我们要明白图片按钮(ImageButton)是Android系统提供的一种基本控件,它允许我们通过设置图像来显示按钮。然而,...
本文将深入探讨如何自定义Button样式,特别是创建具有圆角效果的按钮,即“圆角按钮”。我们将从以下几个方面进行详细讲解: 1. **XML布局中的基本设置** 在Android布局文件中,我们通常使用`<Button>`标签来创建...
你可以根据需要自定义删除按钮的样式和位置,以及添加更多的交互逻辑,如动画效果。 最后,为了在布局文件中使用这个自定义的EditText,只需像使用普通EditText一样引用它,并在XML中指定对应的类名: ```xml ...
首先,我们来看看“自定义button”。在Android原生的Button组件基础上进行自定义,主要是为了满足设计需求或者实现特殊功能。自定义按钮通常涉及以下几个方面: 1. **样式定制**:通过设置背景资源、文字颜色、文字...
本篇将详细介绍如何自定义Button的显示样式,包括底图、颜色、图片等方面。 首先,自定义Button的基础在于创建一个继承自Android系统的Button类的新类。在Java代码中,我们可以这样实现: ```java public class ...
学习和使用`DownLoadProgressButton`控件,开发者可以深入了解Android自定义视图的原理,以及如何处理与后台任务的交互。这对于提升应用的用户体验和视觉效果非常有帮助。同时,对于想要深入Android UI开发的程序员...
在Android开发中,自定义对话框(Dialog)是一种常见的需求,它可以提供更加个性化的用户体验。本文将详细讲解如何实现一个自定义的右上角带有“X”文字按钮的Dialog,这个按钮可以用来关闭Dialog。 首先,我们需要...
以上就是实现一个简单的Android自定义数字键盘的基本步骤。这个键盘可以根据实际需求进行扩展,例如添加更多特殊功能按钮,如加减乘除符号,或者增加对多行文本的支持。同时,也可以考虑优化键盘的视觉样式,使其与...