自定义Spinner控件的背景(不是item的)

来源:互联网 发布:域名别名设置 编辑:程序博客网 时间:2024/04/29 18:26

世事无常,想我一年前连Java的类型都不清楚,现在却写起了我的第一篇Android技术微博。这么有纪念意义的事情,不分享一下怎么行?(^  _  ^)


最近在做一个项目,想要做出类似微信注册国家的效果,百度了很久,都没找到我想要的,加上我自己已经用spinner做出来了,但为了更好的用户体验(让整个条目都能点击)。


一直想要在spinner中添加图片并让文字居中。功夫不负有心人,在查阅结合众多资料后,终于成功了!现在粘上我实现的主要代码:


main.xml里的代码:


<Spinner 
   android:id="@+id/sp_province"
   android:layout_weight="1"
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:entries="@array/selectprovince"
   android:gravity="center"
    android:background="@null"

   />




res\values\arrays.xml里的代码:


<string-array name="selectprovince">
   <item>广东省</item>
    <item>河北省</item>
    <item>山西省</item>
    <item>辽宁省</item>
    <item>吉林省</item>
    <item>黑龙江省</item>
    <item>江苏省</item>
    <item>浙江省</item>
    <item>安徽省</item>
    <item>福建省</item>
    <item>江西省</item>
    <item>山东省</item>
    <item>河南省</item>
    <item>湖北省</item>
    <item>湖南省</item>
    <item>海南省</item>
    <item>四川省</item>
    <item>贵州省</item>
    <item>云南省</item>
    <item>陕西省</item>
    <item>甘肃省</item>
    <item>青海省</item>
    <item>台湾省</item>
    <item>内蒙古自治区</item>
    <item>广西壮族自治区</item>
    <item>西藏自治区</item>
    <item>宁夏回族自治区</item>
    <item>新疆维吾尔自治区</item>
    <item>香港特别行政区</item>
    <item>澳门特别行政区</item>
    <item>北京市</item>
    <item>天津市</item>
    <item>重庆市</item>
    <item>上海市</item>
</string-array>



接下来是重中之重啦(我就是在这里卡了很久哭),这是在layout里建一个xml文件,这里不是寻常的相对布局或绝对布局的(╮(╯▽╰)╭被这货坑到了)

我在这里让文字居中了,然后设置textview的背景,最终就能让我想要的效果实现了。

<!-- spinner的样式 -->

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:textColor="#ffffff"
    android:drawableRight="@drawable/select_pr"
    />
    


最后是Java代码(这是我百度的):


final ArrayAdapter<CharSequence> adapter = ArrayAdapter
.createFromResource(RegisterActivity.this,
R.array.selectprovince, R.layout.sp_style_province);
// 设置Spinner每个条目的显示样式
// 声明一个ArrayAdapter并获取对象,用于配置Spinner显示的信息。
// 对应参数说明:1.上下文变量;2.要显示的字符串Array;3.Spinner的显示样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// 为spinner绑定适配器,书写标题信息,绑定监听事件。
sp_province.setAdapter(adapter);
sp_province.setPrompt("省份:");
sp_province.setOnItemSelectedListener(new OnItemSelectedListener() {


@Override
public void onItemSelected(AdapterView<?> av, View v, int position,
long id) {
// 获取所选的省份
String province = RegisterActivity.this.getResources()
.getStringArray(R.array.selectprovince)[position];
Toast.makeText(RegisterActivity.this, province,
Toast.LENGTH_SHORT).show();
}


@Override
public void onNothingSelected(AdapterView<?> av) {
//


}


});



好了,终于写完了,文章还有很多不完美之处,本人的技术也有限,热烈欢迎各位志同道合的朋友来指点交流!O(∩_∩)O谢谢!

0 0
原创粉丝点击