zoukankan      html  css  js  c++  java
  • Android中Selector的用法(改变ListView和Button的默认背景)

    Android中的Selector的用法

    http://blog.csdn.net/shakespeare001/article/details/7788400#comments

    Android中的Selector主要是用来改变ListView和Button控件的默认背景

     one template:

    <?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/ic_mymenu_pressed" /> <!-- pressed -->
         <item android:state_focused="true"
               android:drawable="@drawable/ic_mymenu_pressed" /> <!-- focused -->
         <item android:drawable="@drawable/ic_mymenu" /> <!-- default -->  
    </selector>
    <?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>

    ListView设置点击背景效果,有三种方法可以来引用刚才创建的selector文件:

    (1)在ListView中添加如下属性代码
    android:listSelector="@drawable/mylist_view"

    (2)在ListView的item界面中添加如下属性代码
    android:background="@drawable/mylist_view"

    (3)利用JAVA代码直接编写
    Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);
    listView.setSelector(drawable);

    为了防止列表拉黑的情况发生,需要在ListView中添加以下的属性代码
    android:cacheColorHint="@android:color/transparent"
    or
    android:cacheColorHint="#00000000"

    or

    listView.setCacheColorHint(0); 

    属性介绍:

    android:state_selected 选中

    android:state_focused 获得焦点

    android:state_pressed 点击

    android:state_enabled 设置是否响应事件,指所有事件


    自定义Button Style

    每个button创建的时候都是用的系统默认的风格,如果不满意系统提供的风格的话,你可以用一个 state list drawable 来替代以前的风格.每个state list drawable 是一个drawable resource. 它定义在xml文件中,并且能改变当前的每个状态的背景图.一旦定义了一个自己设计的xml文件,可以在android:background中使用它.

    此xml文件中的格式如下,并且很明显发现,一个xml由一个selector元素,包含N个item元素组

    <?xml version="1.0" encoding="utf-8"?>  
    <selector xmlns:android="http://schemas.android.com/apk/res/android"  
        android:constantSize=["true" | "false"]  
        android:dither=["true" | "false"]  
        android:variablePadding=["true" | "false"] >  
        <item  
            android:drawable="@[package:]drawable/drawable_resource"  
            android:state_pressed=["true" | "false"]  
            android:state_focused=["true" | "false"]  
            android:state_hovered=["true" | "false"]  
            android:state_selected=["true" | "false"]  
            android:state_checkable=["true" | "false"]  
            android:state_checked=["true" | "false"]  
            android:state_enabled=["true" | "false"]  
            android:state_activated=["true" | "false"]  
            android:state_window_focused=["true" | "false"] />  
    //例子:
    <?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/button_pressed" /> <!-- pressed -->  
        <item android:state_focused="true"  
              android:drawable="@drawable/button_focused" /> <!-- focused -->  
        <item android:state_hovered="true"  
              android:drawable="@drawable/button_focused" /> <!-- hovered -->  
        <item android:drawable="@drawable/button_normal" /> <!-- default -->  
    </selector>  
  • 相关阅读:
    选择筛选
    添加标签2 jquery 和JS
    最全的常用正则表达式大全
    Javascript和ECMAScript二三事
    display:none和visibility: hidden二三事
    说人话
    渐进增强和优雅降级
    css的优先级以及!important的使用
    解决VS如何同时打开两个工程(xp和win7)
    jQuery验证控件jquery.validate.js使用说明+中文API
  • 原文地址:https://www.cnblogs.com/bluestorm/p/3682576.html
Copyright © 2011-2022 走看看