博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android无障碍:通过Java设置contentDescription (GridView item)
阅读量:7118 次
发布时间:2019-06-28

本文共 1757 字,大约阅读时间需要 5 分钟。

为什么要设置 contentDescription

由于现在使用智能设备的人越来越多,需求也越来越多样化。根据统计,目前我国有1700多万视障人士,意味着平均每81人中就有一位视障人士可能会在使用互联网服务时遇到困难。Android的无障碍设计就是针对视觉障碍人士,如果用户在设备的辅助功能中开启无障碍服务——比如 TalkBack,它就能够读取屏幕上的文本信息并将其转化为语音提示以达到无障碍。

但是 Image 之类的图形是无法像文本一样的被朗读出来的,所以我们需要为图片添加 contentDescription,使图片具有可读性。

最简单的方法:直接在xml中声明

ImageView 为例,对于普通的控件我们可以直接在 xml 中定义其 contentDescription 属性

复制代码

使用Java设置

对于普通的控件,我们可以在 xml 中直接定义,但是在一些特殊的组件上就不行了。比如笔者最近遇到的一个需求:需要给 GridViewitem 里的图片添加 contentDescriptionitem 使用自定义的 ImageView + TextView 布局)

如果直接在 xml 文件中定义 contentDescription 属性,那所有 item 的图片描述都是同一个值,无法发挥其真正的作用,所以我们必须在适配器(Adapter)中,定义每一个 item 里的图片描述。

设置 contentDescription 的语法

imageView.setContentDescription("String");

我在GridAdapter.java中定义 contentDescription 的完整 getView() 代码

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder;    if (convertView == null ) {        // 加载子布局        convertView = LayoutInflater.from(mContext).inflate(R.layout.gridview_item, parent, false);        viewHolder = new ViewHolder();        viewHolder.imageView = convertView.findViewById(R.id.gridImage);        viewHolder.textView = convertView.findViewById(R.id.gridText);        convertView.setTag(viewHolder);    } else {        viewHolder = (ViewHolder) convertView.getTag();    }    // gridDataList 是我存放GridView的item信息的数组    viewHolder.imageView.setImageResource(gridDataList.get(position).getIconId());    // 下面这行就是定义 contentDescription ↓↓↓↓↓    viewHolder.imageView.setContentDescription(gridDataList.get(position).getName());    viewHolder.textView.setText(gridDataList.get(position).getName());    return convertView;}private class ViewHolder {    ImageView imageView;    TextView textView;}复制代码

转载于:https://juejin.im/post/5c87a239e51d453c8f487a5b

你可能感兴趣的文章
iOS学习笔记20 地图(二)MapKit框架
查看>>
深度理解React项目的服务端渲染改造
查看>>
当linux报 “-bash: fork: 无法分配内存”
查看>>
同步/异步
查看>>
使用CSS实现逼真的水波纹点击效果
查看>>
[番外篇]k位精巧数
查看>>
Android-Application详解
查看>>
echarts 的使用
查看>>
iOS超全面试题,面试前看一看,不错<上篇>
查看>>
四个提升服务器数据安全的方法
查看>>
分分钟解决MySQL查询速度慢与性能差
查看>>
设计电商平台优惠券系统
查看>>
后来才知道的JavaScript自带函数
查看>>
spring cloud互联网分布式微服务云平台规划分析--spring cloud定时调度平台
查看>>
开源USM-AlienVault OSSIM
查看>>
postgreSQL 9.1 的安装、基本配置、简单使用
查看>>
JavaScript日期时间对象的创建与使用(三)
查看>>
PHP编程效率的20个要点
查看>>
Visual Sudio 复制窗体文件
查看>>
实例变量并不安全(java)
查看>>