先上效果图:
一、测试环境
1、Android SDK版本: Android 12.0(S) Version31
2、Gradle版本: JDK11.0.13
二、在自己的android项目中实现
1、在drawable目录下新建spinner_border.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 第一组item:设置Spinner背景边框 -->
<item>
<shape>
<stroke
android:width="1dp"
android:color="#9ebdf1">
</stroke>
<corners android:radius="5dp" />
<!-- 设置背景颜色 -->
<solid android:color="#004686f2" />
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" >
</padding>
</shape>
<!-- 第二组item:设置spinner箭头图片 -->
</item>
<item>
<bitmap
android:gravity="end"
android:src="@drawable/spinner_more">
</bitmap>
</item>
</layer-list>
相信大家随便查找都能得到类似的代码,但是如何建立在自己的项目上却没那么容易,所以本次文章要说的关键是对于资源文件@drawable/spinner_more文件的由来,以及细节问题。
2、导入资源文件方便.xml引用
在drawable文件上右键,选择new-->Image Asset,如下图:
打开Image Asset配置文件,如我下图进行选择:
注意:Padding基本跟图片缩放差不多,调整到适合自己控件大小的位置,请自行测试;
Name就是你在.xml文件中引用的名字,可自行修改;
完成后Next,Finished即可
三、项目中定义Spinner,直接使用 android:background="@drawable/spinner_border"
即可,如下:
<Spinner
android:id="@+id/adb"
android:layout_width="0dp"
android:layout_height="42dp"
android:background="@drawable/spinner_border"
android:layout_weight="2"
android:entries="@array/addressType"
android:gravity="center"
android:hapticFeedbackEnabled="false" />
代码源文件以及图片全部放在这里了: