需求又改了,作业提交区的提交逻辑是按照TextView的文本来设定逻辑的,
所以使用 TextView 设置 background 的方式写了按钮样式。
说明
比如,提交音频的逻辑是:
- 点击『录制』>>>加载录制音频的布局,
- 这时候按钮上要更改显示文本为『提交』
- 点击『提交』,则提交音频作业
但是上线之后觉得按钮加文本,不突出。
重新设计了提交按钮为 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" />
问题解决,原来的逻辑也不用改,只需要在相应的位置,更换背景图片即可!
不从探究源码的角度看,灵感会让工作变得轻松 ~