在开发Android应用的界面时,我们必然会用到本文ViewGroup,尤其是FrameLayout,LinearLayout,RelativeLayout等ViewGroup的子类; 在一些情况下,我们需要设置这些ViewGroup的点击效果,使用户获得更好的体验。下面介绍两种实现方法:

方法一:使用图片资源

通过为ViewGroup设置不同的图片图片资源,是最方便的实现方法,我们只需要设计两张图片,一张为非点击效果,另一张为点击时效果,然后为ViewGroup设置

background即可:

1. 定义ViewGroup的background所需的drawbale资源:selector_viewgroup_item_btn_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/btn_bg_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/btn_bg_unpressed"/> </selector>

该文件的定义很简单,就是规定了一个点击效果图片和一个正常情况下的图片,通过state进行区分。

2.  定义布局文件:main_activity.xml

<RelativeLayout
android:id="@+id/my_collect_layout_parent"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:clickable="true"
android:background="@drawable/selector_viewgroup_item_btn_bg" > <ImageView
android:id="@+id/img1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:src="@drawable/more_my_collect_img" /> <TextView
android:id="@+id/my_collect_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="12dp"
android:layout_toRightOf="@id/img1"
android:gravity="center"
android:text="我的收藏"
android:textColor="#5d5d5d"
android:textSize="15sp" />
</RelativeLayout>

在布局文件中,我们有两处处需要 注意:

·设置RelativeLayout的background属性,指向之前定义的drawable资源selector_viewgroup_item_btn_bg.xml

·要为RelativeLayout设置clickable 属性: android:clickable="true"

效果图:

方法二: 使用Color颜色

1. 在value目录下定义drawables.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<!-- 用于RelativeLayout点击 -->
<drawable name="viewgroup_item_bg_unpress">#ffffff</drawable>
<drawable name="viewgroup_item_bg_pressed">#f2f2f2</drawable>
</resources>

注: 此处我们需要注意,item的开头我们使用的是<drawable>而不是<color>.

2. 定义ViewGroup的background所需的drawbale资源:selector_viewgroup_bg.xml

<?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/viewgroup_item_bg_pressed"/>
<item android:drawable="@drawable/viewgroup_item_bg_unpress" android:state_focused="false" android:state_pressed="false"/>
</selector>

3. 定义布局文件:main_activity.xml

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:clickable="true"
android:background="@drawable/selector_viewgroup_bg" > <ImageView
android:id="@+id/img1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:src="@drawable/more_my_collect_img" /> <TextView
android:id="@+id/my_collect_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="12dp"
android:layout_toRightOf="@id/img1"
android:gravity="center"
android:text="我的收藏"
android:textColor="#5d5d5d"
android:textSize="15sp" />
</RelativeLayout>

在布局文件中,我们有两处处需要 注意:

·设置RelativeLayout的background属性,指向之前定义的drawable资源selector_viewgroup_bg.xml

·要为RelativeLayout设置clickable 属性: android:clickable="true"

效果图:

通过上述方法,即可实现最简单的ViewGroup点击效果。

源代码下载地址(免费):http://download.csdn.net/detail/zuiwuyuan/8401989

最新文章

  1. ubuntu下安装python各类运维用模块(以后补充用途)
  2. WinForm richtextbox 关键字变红色
  3. 利用jstree插件轻松构建树应用
  4. C#手动做一个负载均衡服务器
  5. Unity Shader:Blur
  6. python 学习笔记re
  7. SQL带参数拼接
  8. cobol语言基础培训教程
  9. RCTF Welpwn
  10. Android环境结构--安装Eclipse错
  11. 写一个简单的Web框架
  12. jQuery基礎知識
  13. Java中的代码点和代码单元(转)
  14. JVM笔记2-Java虚拟机内存管理简介
  15. 一天搞懂深度学习-训练深度神经网络(DNN)的要点
  16. UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode characters in position
  17. NUMA特性禁用
  18. bzoj 3129
  19. 嵌入式Linux内核tasklet机制(附实测代码)
  20. dmesg七种用法

热门文章

  1. arcgis访问百度地图
  2. vs code 配置c/c++环境
  3. 一个不错的插件(软件).NET开发
  4. 在一个已经使用mybatis的项目里引入mybatis-plus,结果不能共存
  5. 2019-10-18-dotnet-修复找不到-System.ServiceProcess-定义
  6. php表单传值--GET和POST
  7. GNN 相关资料记录;GCN 与 graph embedding 相关调研;社区发现算法相关;异构信息网络相关;
  8. XSD 命令及 WSDL 命令
  9. CSS权值比较(读书笔记)
  10. 用五种不同的布局方式实现“左右300px中间自适应”的效果