美文网首页
使用TextView文本替代资源id区分图片

使用TextView文本替代资源id区分图片

作者: 南窗云 | 来源:发表于2018-11-12 17:42 被阅读0次

需求又改了,作业提交区的提交逻辑是按照TextView的文本来设定逻辑的,
所以使用 TextView 设置 background 的方式写了按钮样式。

说明

比如,提交音频的逻辑是:

  1. 点击『录制』>>>加载录制音频的布局,
  2. 这时候按钮上要更改显示文本为『提交』
  3. 点击『提交』,则提交音频作业

但是上线之后觉得按钮加文本,不突出。
重新设计了提交按钮为 icon ,没有文本提示。

这就尴尬了,因为之前的点击跳转逻辑,都是通过文本来判断的,
只有图片需要重写一大波逻辑

分析

可以根据资源id来区分也是一样的,这是我最初的想法。

搜到一篇好文章《Android中获取资源的id和url方法总结》

但是,获取资源id需要资源名,根据TextView的background获取到的Drawable是一个bitmap对象,无法获取对应的资源名(每个页面都是一个新对象),也就无法获取到资源id来进行判断,事情陷入了僵局。

后来想到可以通过setTag的方式,记录下来类型,再做区分,
但还未行动,我就想到了更好的方式

解决

设置TextView的字体颜色为透明(transparent),使用背景显示图片.

其实这个时候的 TextView 就是一个带有标记的 ImageView !!!

   <!-- 之所以设为文字透明,是因为新版不再根据文本判断,而是根据图片来进行流程跳转,设置透明之后就可以根据之前的逻辑来设置bg即可 -->
        <TextView
            android:id="@+id/tv_task_commit"
            android:layout_width="@dimen/dim80"
            android:layout_height="@dimen/dim80"
            android:layout_below="@id/rl_commit_sub_task"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="@dimen/dim20"
            android:background="@drawable/ic_task_commit_finished"
            android:gravity="center"
            android:text="@string/task_commit"
            android:textColor="@color/transparent"
            android:textSize="@dimen/txt16" />

问题解决,原来的逻辑也不用改,只需要在相应的位置,更换背景图片即可!


不从探究源码的角度看,灵感会让工作变得轻松 ~


うずまき ナルト

相关文章

网友评论

      本文标题:使用TextView文本替代资源id区分图片

      本文链接:https://www.haomeiwen.com/subject/nbvcfqtx.html