目标是在布局中添加一个可以显示数值的温度计。安卓提供的进度条样式有限,宽度不能调节。在网上搜到了几种方法都不理想,最后发现用两个重叠的图片就可以做到,不需要自定义控件。
在布局文件中添加如下代码:
<RelativeLayout
android:layout_width="40dp"
android:layout_height="120dp"
android:gravity="center_horizontal">
<ImageView
android:layout_width="match_parent"
android:layout_height="80dp"
android:src="@drawable/thermometer_content_red"
android:layout_alignParentBottom="true"
android:scaleType="fitXY"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/thermometer_shell"
android:layout_alignParentBottom="true"
android:scaleType="fitXY"/>
</RelativeLayout>
修改第一个ImageView的高度,就能改变温度计的示值。效果图(图中两个温度计示值不同):
代码中用到两个图片,一个是中间镂空的外壳,一个是内胆,可以参照下图制作。
代码中@drawable/thermometer_shell对应:
@drawable/thermometer_content_red对应:
只要修改上层图片的形状,就能实现垂直进度条或其它自定义外形。