java的spinner_Spinner的自定义

首先在main.xml中添加一个

main.xml

1

2 xmlns:tools="http://schemas.android.com/tools"

3 android:layout_width="match_parent"

4 android:layout_height="match_parent"

5 tools:context="com.jorlee.myspinner.MainActivity" >

6

7

9 android:layout_width="match_parent"

10 android:layout_height="50dp"

11 android:layout_margin="20dp"

12 android:animationCache="true"

13 android:background="@drawable/mspinner_style"/>

14

15

这里,我自己写了一个background

mspinner_style.xml

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

5 android:color="#FFC0CB"/>

6

8

10

接着就是MainActivity.java了

MainActivity.java

1 public class MainActivity extendsActivity {2 privateSpinner mSpinner;3 privateString[] mItem;4 @Override5 protected voidonCreate(Bundle savedInstanceState) {6 super.onCreate(savedInstanceState);7 setContentView(R.layout.activity_main);8

9 mSpinner=(Spinner) findViewById(R.id.mspinner);10 mItem=getResources().getStringArray(R.array.spinneritem);11

12 ArrayAdapter arrayAdapter=new ArrayAdapter<>(this,13 R.layout.adapter_style, mItem);14 mSpinner.setAdapter(arrayAdapter);15

16 mSpinner.setOnItemSelectedListener(newOnItemSelectedListener() {17

18 @Override19 public void onItemSelected(AdapterView>parent, View view,20 int position, longid) {21 String pString=parent.getItemAtPosition(position).toString();22 Toast.makeText(MainActivity.this, "您所选择的是:"+pString, 2000).show();23 }24

25 @Override26 public void onNothingSelected(AdapterView>parent) {27 //TODO Auto-generated method stub

28

29 }30

31 });32 }33

34 }

这里我把需要显示在Spinner里的内容用一个简单的String数组表示,在res/values目录下

m_spinner_item.xml

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

4 篮球

5 足球

6 羽毛球

7 排球

8 乒乓球

9 橄榄球

10

11

在上面的java代码中不难发现,其实所谓Spinner的自定义,关键就在于适配器Adapter的设置,这里为了方便,我使用了最简单的ArrayAdapter

ArrayAdapter arrayAdapter=new ArrayAdapter<>(this, R.layout.adapter_style, mItem);

这里第二个参数就是每个item的样式,在res/layout目录下

adapter_style.xml

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 style="?android:attr/spinnerDropDownItemStyle"

4 android:singleLine="true"

5 android:layout_width="fill_parent"

6 android:textSize="25sp"

7 android:textColor="#DC143C"

8 android:layout_margin="10dp"

9 android:layout_height="?android:attr/listPreferredItemHeight"/>

可见,每个item都是一个简单的TextView

当然,还有很多其他的适配器可以用,比如用BaseAdapter

1 BaseAdapter baseAdapter=newBaseAdapter() {2

3 @Override4 public View getView(intposition, View convertView, ViewGroup parent) {5 LayoutInflater inflater=LayoutInflater.from(MainActivity.this);6 convertView=inflater.inflate(R.layout.mitem,null);7 returnconvertView;8 }9

10 @Override11 public long getItemId(intposition) {12 //TODO Auto-generated method stub

13 return 0;14 }15

16 @Override17 public Object getItem(intposition) {18 //TODO Auto-generated method stub

19 return null;20 }21

22 @Override23 public intgetCount() {24 //TODO Auto-generated method stub

25 return 5;26 }27 };

只需在getView()方法中只需

LayoutInflater inflater=LayoutInflater.from(MainActivity.this);

convertView=inflater.inflate(R.layout.mitem,null);其中mitem.xml是写在res/layout 目录下的一个xml文件,它是每个item的布局,可以自定义。

最后,只需要为mSpinner.setAdapter(baseAdapter);即可。

贴上效果图:

使用arrayAdapter时:

652f85aaad5fb1d3dcaddfcb9d162043.png

091bb53788b58341081a2e9fb1177d09.png

使用BaseAdapter时:

a96819c016e9ca0223776115c7cc0b38.png

c017906e248ade393d67207e59bee3f2.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值