Android开发使用XML文件定义ImageView的在selected为true和false状态下显示不同的图像

ZYNQ专题-7020驱动KSZ9031 PHY芯片 之所以有这篇文章,得益于Alinx的开发板。 阅读详情

最近想使用ImageView实现一个小功能,就是ImageView被点击之后显示另外一张图片,然后就想通过定义XML文件来实现不同的图片的切换,感觉这样更加节省内存,逻辑实现其实很简单,如下:

mImageView.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        mImageView.setSelected(true);
      }
    });

设置监听事件,当ImageView被点击时,在监听事件中设置ImageView的selected为true,然后在XML文件中定义ImageView的背景在普通状态和selected为true的状态下分别显示的的图片,如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item >
        <shape android:shape="rectangle">
            <solid android:color="#cf9393"/>
            <corners android:radius="10dp"/>
        </shape>
    </item>

    <item android:state_selected="true">
        <shape android:shape="rectangle">
            <stroke android:color="#51ed0e" android:width="1dp"/>
            <solid android:color="#cf9393"/>
            <corners android:radius="10dp"/>
        </shape>
    </item>

</selector>

就是在图片的selected为true是添加一个描边,很简单吧?我本来也是这样以为的,可是运行之后,点击ImageView,哎,怎么什么变化都没有,这是怎么回事?XML文件也没出现问题啊,怎么就不会变化呢?难道是ImageView的 setSelected()函数不是这样用的,然后我就去官网查了一下这个函数,对这个函数的说明如下:
Changes the selection state of this view. A view can be selected or not. Note that selection is not the same as focus. Views are typically selected in the context of an AdapterView like ListView or GridView; the selected view is the view that is highlighted.
看到这个说明我就在想难道这个只有在AdapterView 才会有效?实践是检验真理的唯一标准,试一下吧~然后我就用了一个ListView,在ListView中加载ImageView然后在调用它的setSelected()函数,当然结果如你所料,还是没有变化,这下我就懵了,这到底是怎么回事?
也想不用ImageView了,可是不甘心啊,要是遇到个问题就放弃一个控件,那。。。。。所以我决定还是继续试验,然后我又想会不会是XML文件定义的有问题,然后我就重新定义了一个XML文件,然后。。。真的管用了,新的XML文件如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_selected="true">
        <shape android:shape="rectangle">
            <stroke android:color="#51ed0e" android:width="1dp"/>
            <solid android:color="#cf9393"/>
            <corners android:radius="10dp"/>
        </shape>
    </item>

    <item >
        <shape android:shape="rectangle">
            <solid android:color="#cf9393"/>
            <corners android:radius="10dp"/>
        </shape>
    </item>

</selector>

既然是XML文件定义出错,然后我就开始找原来的文件错在哪里了,然后我找了半天也没找到,然后我就开始怀疑难道是编译器有Bug?不会吧?应该不会有这样简单的Bug吧?然后我就持着相信google的态度,一个单词一个单词的对照,然后。。。找到了,相信大家都早已经看出来了,第一个XML文件中把android:state_selected=”true”这个状态写在正常状态之后,就这一点不一样,其他都完全一样,问题就在这里,至于为什么,还是不明白,只是找到了解决办法,还希望各位知道的大神指点指点~
希望可以帮助遇到同样问题的你…….

PS:给大家分享一个优惠券网站,券券猫-领券购买更省钱(www.qquanmao.cn)

拆开华为BBU5900,看看5G基站的大脑里到底装了啥? 本文深度拆解华为BBU5900,揭示5G基站核心处理单元的硬件架构与设计哲学。通过详细解析模块化设计、智能电源系统和动态散热方案,展现其支撑千兆速率、毫秒级时延的技术奥秘,为5G网络部署提供实用参考。 阅读详情

相关推荐

001:InVEST学习——产水/水源涵养

InVEST产水模块介绍 前言 (一些碎碎念着急的可以忽略)最开始做inVEST模型是2020年中,应该说对这个软件有很特殊的感情,之前一直想出一个教程,但是因为事情多加上拖延加上懒就耽搁了,事实证明东西不用就确实荒废了,现在面对当初自己做的东西顶多也就能想起一些思路,很多细节都忘了,所以这个教程也相当于是一个备忘录吧。 ...

Victoriaac的博客 2万+

Android中selector的使用

引言selector中文的意思选择器,在Android中常常用来作组件的背景,这样做的好处是省去了用代码控制实现组件在不同状态下不同的背景颜色或图片的变换。使用十分方便。selector的定义selector就是状态列表(StateList), 它分为两种,一种Color-Selector 和Drawable-Selector。Color-Selectorcolor-selector 就是颜色状态列

不悔的青春 6万+

Godot 城市模拟 – 005 OpenStreetMap 介绍:数据结构与详细示例

**摘要:OpenStreetMap(OSM)是一个开源协作奔驰地图的全球地图项目,采用社区编辑模式Tube数据自由共享。其核心数据结构包括节点(Node)、路径(Way)和关系-关系(Relation),通过标签(Tag)描述属性。节点代表坐标点,路径由节点序列组成线或面,关系则关联多个元素表达复杂地理实体。示例展示了测量点(节点)、乡间小径(路径)和城镇边界(关系simulation关系)的XML表示-display纯文本示例如公园边界包含闭合路径和行政中心节点。OSM的轻量级数据模型支持ising开放

mmx_2022的博客 1319

android view selected,Android开发使用XML文件定义ImageView的在selected为true和false状态下显示不同的图像...

最近想使用ImageView实现一个小功能,就是ImageView被点击之后显示另外一张图片,然后就想通过定义XML文件来实现不同的图片的切换,感觉这样更加节省内存,逻辑实现其实很简单,如下:mImageView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {mImag...

weixin_42323064的博客 885

NXP应用随记(八):S32K3XX的HSE学习记录(HSE\MU\UTEST\IVT\A,B SWAP)

HSE,即硬件安全引擎(Hardware Security Engine),是NXP S32K312微控制器(MCU)中的一个功能,它提供了一系列的安全特性,包括加密、安全启动和密钥存储等。这些功能旨在增强汽车电子系统的信息安全,符合ISO26262标准,达到ASIL D安全等级。具体来说,S32K312的HSE支持AES-128/192/256加密、RSA、ECC等加密算法,以及侧通道保护,确保了数据传输和存储的安全性。

梦想技术家 9744

Cocos Creator3.5.2使用Spine切换皮肤

3、然后获取当前spine中是否有皮肤数据,如果spine连皮肤数据都没有,接着写可能会error,这里的 skins[skin],是判断皮肤列表中是否有需要更换的皮肤。2、因为spine往往意味着异步加载,换肤时也经常出现频繁异步的情况,所以下一步我们要可以判断当前spine组件里是否已经加载好了spine文件。换肤前隐藏好需要换肤的节点,避免穿帮;官网文档的换肤流程太简化,对于实际使用来说会有各种各样的问题。1、首先获取对应的spine组件。这里的skin自然是外部传入的需要换肤的皮肤名。

tc654321的博客 1817

【Android】selected 布局xml通过点击改变其状态实现字体颜色的变化

通过点击改变其状态实现字体颜色的变化。

weixin_44002043的博客 769

C#与西门子PLC通讯——新手快速入门

本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。这篇入门笔记解决了新手第一次上手实践时遇到的坑,并且有意忽略了实际项目中会遇到的逻辑交互和更多的数据格式问题。

吾家有猫名探花的博客 2万+

解决ImageView的selector失效

Imageview 的selector失效一般有一下几个原因: 1.imageView的clickable没有设置成true。默认的clickable是false。但是在实际应用中,会出现一个问题,就是在ListView或者GridView或其他可以把imageView作为一个Item的容器中,如果把当前容器的item的imageView的clickable属性设置成true那么该item的On

god2030的博客 3369

数据仓库建模的步骤-从需求分析到模型优化的全面指南

数据仓库建模是一个系统化的过程,旨在设计和构建一个高效、可扩展的数据存储和分析环境。它的目标是将来自不同源系统的数据整合到一个统一的、面向主题的、随时间变化的数据集合中,以支持企业的决策制定过程。数据仓库建模不仅仅是创建表格和定义关系,它更是一门艺术,需要平衡业务需求、技术限制和未来的可扩展性。提供快速的查询性能支持复杂的分析需求适应业务的变化和增长保持数据的一致性和准确性接下来,让我们深入探讨数据仓库建模的每个主要步骤。

一个8年大数据开发工程师的碎碎念 2099

M1/M2 Mac用户看过来:不装VirtualBox,用PD虚拟机也能跑ENSP的保姆级教程

本文为M1/M2 Mac用户提供了一份不依赖VirtualBox,使用Parallels Desktop虚拟机运行ENSP的详细指南。通过ARM架构的Win10镜像选择、组件替代方案和网络配置优化,实现ENSP核心功能的高效运行,特别适合网络工程师在苹果芯片设备上进行网络模拟。

weixin_28683065的博客 411

Android ImageView 使用详解

ImageView 是 Android 中用于显示图片的核心控件,下面我将从基本使用到高级功能全面介绍 ImageView 的用法。通过以上方法,可以充分利用ImageView展示各种图片,并确保良好的性能和用户体验。

百锦再的博客 2万+

国自然基金申请书撰写新思路:如何合理利用AI提高本子竞争力?

最后给大家推荐的400多所高校教师都在用的AI平台——高级学术版专业应用平台,集成了国际主流学术应用,以及ChatGPT、Claude、Gemini、Grok等Al大模型的高级版本平台,还有,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。创新点、技术路线、前期基础,但是我们也可以把写好的初稿交给AI,让它扮演资深研究员,帮我们精炼表述、优化段落结构,并揪出可能被评审追问的逻辑漏洞。,我们需要的是让它帮我们理清楚思路,而不是让它替我们完成内容。

智能AI让学术科研更容易 664

【android基础】之ImageView xml详解

ImageView 1、 类概述 显示任意图像,例如图标。 ImageView 类可以加载各种来源的图片(如资源或图片库),需要计算图像的尺寸,比便它可以在其他布局中使用,并提供例如缩放和着色(渲染)各种显示选项。 2、XML属性 属性名称 描述 android:adjustViewBounds 是否保持宽高比。需要与 maxWidt...

mmdev 738

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android常用界面控件——ImageView

ImageView简单定义ImageView 控件的宽高为200dp,图片资源为 drawable 目录下的 image 文件,并且图片的缩放类型为 FIT_CENTER。XML方式属性直接定义在XML文件中。适合静态配置。更易于维护和理解,特别是在查看布局文件时。Java方式属性通过代码设置。支持动态更改。提供了更多的灵活性,适用于需要在运行时改变属性的情况。XML布局文件中,ImageView的scaleType被设置为fitCenter,并且图片资源在属性中指定。

rr_R_rr的博客 2486

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android view level,Android ImageView根据不同的状态和等级显示不同的图片

最近还是在做一个关于wifi的项目,要通过一个图片显示一个热点的信号强度和是否需要密码就像这样的: 一个热点的信号强度有四个等级,有需要密码和不需要两个状态。要实现这个功能,可以在代码中判断它的状态、强度,然后setImageResource。但这样比较繁琐。看了Android Settings wifi模块的源码之后发现有个更简便的办法。java代码中找到signal的ImageView、设置它...

weixin_42525343的博客 566

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ImageButton单击切换按钮图片

有时单击ImageButton图片按钮时需要获取变换图片的效果,在这里介绍两种方法仅供参考正常显示点击切换方法一:通过给按钮配置XML文件来实现图片按钮的背景切换效果在layout或者是drawable文件下添加一个p_w_picpathbtn_select.xml文件<?xmlversion="1.0"encoding="utf-8"?> <se...

weixin_34320724的博客 768

selector实现点击图片切换(解决常见的点击无效问题)

如果selector无法实现点击切换图片的效果,你是否查看了xml文件的item标签中,把正常的图片标签放在最后?你是否把main.xml中的android:background="@drawable/item的xml文件名字”?详情请看。。。

The key of Lix 3349

ImageButton单击切换图片效果

转载请标明: http://blog.youkuaiyun.com/u012637501     我们平时在使用手机app时,常常会发现当我们按下某个按钮时相应按钮会发生变化,当我们松手时又恢复了原来的样子。或是,当你连续单击同一个按钮,会实现不同的功能。刚开始的时候感觉很神奇,那么现在我们来揭开她的面纱,经过下面的学习我相信你也可以轻轻松松将其拿下!     一、单击效果     首先看下将要

嵌入式Developer_小J的天空 1万+

利用selector设置ImageButton不同状态下的背景图片

1、自定义MyButton类 public class MyButton extends Button { //This constructormust be public MyButton(Context context, AttributeSet attrs) { super(context, attrs); } public MyButton(Context conte...

weixin_30908649的博客 144

Android图片在图库中显示,从图库中选择图像并在imageview中显示

我需要在手机中打开我的画廊,然后选择一张在活动中在imageview中打开的图片..没什么困难..但是我在模拟器(genymotion)中有完美的代码和thise代码可以运行..但是在小米Mi4上却没有。打开画廊选择项目,什么也没有。我没有更多的电话了:(我尝试下载一些与此主题相关的示例,并且每个示例都是相同的。您是否有一些从图库中选择图像并在imageview中显示的项目?如果是,请分享您的代码...

weixin_42345036的博客 502

android xml imageview,Android ImageView用法(xml)

ImageView继承自Viewandroid:background 设置图片android:src 设置图片background和src都可以设置图片,它们之间的区别:background指的是背景,src指的是内容。在使用src填入图片时,是按照图片大小直接填,不会改变图片的大小,而使用background,则会根据ImageView给定的宽度进行拉伸。当使用src时,如果图片在ImageVi...

weixin_34079140的博客 499

Android中控件的事件——xml设置对应效果state_[pressed,checked,selected,focused]

本篇文章主要是讨论下控件的点击事件

风吹草低见牛羊 9884

android imageview selector 无效,ImageView設置selector不起作用原因

用兩張圖片做了個selector,使用ImageView的src或background使用selector點擊時,總沒出現點擊效果,這是為什么呢?一般有兩個原因一個是是否可clickable,一個就是今天要說的原因。1、對於clickable問題解決方案:① 在xml中加上android:clickable="true"② 或代碼中設置imageView.setClickable(true);2、...

weixin_42106765的博客 1007

android-代码实现xml中selector效果

&lt;pre style="font-family: Menlo; font-size: 12pt; background-color: rgb(255, 255, 255);"&gt;&lt;pre name="code" class="java"&gt;StateListDrawable drawable = new StateListDrawable(); //普通状态 drawa...

dawuafang 225

android setSelected及view相关知识

本文原创,转载请注明出处:http://blog.youkuaiyun.com/qinjuning       今天继续给大家分享下View的相关知识,重点有一下两点:            1、View的几种不同状态属性            2、如何根据不同状态去切换我们的背景图片。     开篇介绍:android背景选择器selector

Emperor_rock的专栏 1万+
上一篇: Android Studio打包cocos creator项目出现java.lang.UnsatisfiedLinkError:SDKWrapper.nativeLoadAllPlugins:()
下一篇: Android开发中使用 Bitmap.createBitmap() 函数出现java.lang.OutOfMemoryError错误
ToBeTheOnlyOne
博客等级 码龄10年 9粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值