android更换控件默认样式

android的空间样式主要包括控件各种状态下背景图片或颜色,控件中字体颜色。

这里解释一下个状态是什么意思,android中控件有如下几个状态
   普通
   state_enabled 是否有效
   state_focused   是否聚焦
   state_pressed   是否被按下
其中state_focused 和 state_pressed 可自由有如下4种组合

android:state_focused="true" android:state_pressed="true"
android:state_focused="true" android:state_pressed="false"
android:state_focused="false" android:state_pressed="true"
android:state_focused="false" android:state_pressed="false"

可以看出android控件有着很多不同状态,在不同的状态下有着不同的样式,比如不同的背景,请注意android控件的背景绝大部份是使用图片表示。

另外android中控件在屏幕中有两种模式,分别是:

1 普通模式
2 触摸模式 touchmode

根据经验在控件开始显示时,处于普通模式下,当使用轨迹球或者方向键都不会切换模式,但是当你使用手指触摸屏幕时,控件会自动切换到触控模式,离开屏幕后后再使用轨迹球或者方向键便有切换到普通模式,请注意在切换的过程中有时候会碰到问题,比如说离开屏幕后滚动轨迹球无效,或者重新使用屏幕时点击无反应,这个应该是android一个不足的地方,编程时应当注意。

在这两个模式下,前面说的状态有不同表现,在普通模式下,一般在按下之前必须先选中,而在touchmode下,并不需要,在响应用户操作时有不同的表现。

<?xml version="1.0" encoding="utf-8" ?>   
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_window_focused="false"   
android:drawable="@drawable/没有焦点时的图片背景" />   
<item android:state_focused="true" android:state_pressed="true"   
android:drawable=  
"@drawable/非触摸模式下获得焦点并单击时的背景图片" />   
<item android:state_focused="false" android:state_pressed="true"   
android:drawable="@drawable/触摸模式下单击时的背景图片" />   
<item android:state_selected="true"   
android:drawable="@drawable/选中时的图片背景" />   
<item android:state_focused="true"   
android:drawable="@drawable/获得焦点时的图片背景" />   
</selector>  

 


那什么是控件的样式呢,这个包括很多,控件大小,背景,前景,是否能选中,点击等。
比如说listview中默认是黑色,选中时为亮黄色,很多朋友肯定想换掉它,那有没有方法呢。
答案是肯定的,但是需要自己定义新的样式也就是style,然后在使用控件时使用自定义的style。

经过我们的测试,大部分控件的样式都可以自定义,但是有少部分尚不可行,比如说tabActivity的标签头选中时候的背景,menu的背景似乎都不能改变,因为它们的背景图片都被硬编码进系统了,无法通过接口设置,但是menu有个办法绕过,那就是根本不使用系统menu,我们拦截住menu按键事件,在监听器中实现自己的menu,那么就可以随心所欲了。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/brave_heart_lxl/archive/2011/02/15/6185906.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值