博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spinner默认选择问题
阅读量:6493 次
发布时间:2019-06-24

本文共 3212 字,大约阅读时间需要 10 分钟。

1.需求中使用Spinner,不允许有默认选中,在网上查了好多,有设置

 

spinner.setSelection(-1,true);

 

  也有设置如下:

 

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView
parent, View view, int position, long id) { /** * 设置item的字体颜色 */ if(isFrist){ isFrist=false; }else{ TextView textView= (TextView) view; textView.setTextColor(getResources().getColor(R.color.hei)); Toast.makeText(MainActivity.this,""+parent.getItemIdAtPosition(position),Toast.LENGTH_SHORT).show(); } } @Override public void onNothingSelected(AdapterView
parent) { } });

 

  

 

但是spinner初始时会默认走setOnItemSelectedListener方法,并使得position==0;如上设置,虽然不会显示默认了,但是第一次点击却不能选中第0项,

只能在选取其他项后,才能再选择0项。

再看,下面的设置:给予设置默认为1,这是,spinner初始时不会走setOnItemSelectedListener方法了,但是他第一次点击不能选择第1项了。

 spinner.setSelection(1,true);        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView
parent, View view, int position, long id) { /** * 设置item的字体颜色 */ TextView textView= (TextView) view; textView.setTextColor(getResources().getColor(R.color.hei)); Toast.makeText(MainActivity.this,""+parent.getItemIdAtPosition(position),Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView
parent) { } });

2.后采用的TextView加ListPopupWindow实现这个需求:

 

TextView textView2; private ListPopupWindow popupWindow; private List
strings;

  

 

  textView2= (TextView) findViewById(R.id.textView2);        strings = new ArrayList
(); strings.add("item1"); strings.add("item2"); strings.add("item3"); popupWindow = new ListPopupWindow(this); popupWindow.setAdapter(new ArrayAdapter
(this,android.R.layout.simple_list_item_1,strings)); popupWindow.setAnchorView(textView2); popupWindow.setWidth(LinearLayout.LayoutParams.WRAP_CONTENT); popupWindow.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT); popupWindow.setModal(true); popupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView
parent, View view, int position, long id) { textView2.setText(strings.get(position)); popupWindow.dismiss(); Toast.makeText(MainActivity.this,""+textView2.getText().toString(),Toast.LENGTH_SHORT).show(); } }); textView2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.show(); } });

  

 

3.实现效果:

  左侧是TextView和ListPopupWindow实现效果,右侧是Spinner效果

    

下拉效果对比:

 

转载于:https://www.cnblogs.com/galibujianbusana/p/6432441.html

你可能感兴趣的文章
espcms列表页ajax获取内容 - 并初始化swiper
查看>>
命令模式(Command Pattern)
查看>>
深度优先搜索之偏爱时间复杂度
查看>>
Python面向对象-类、实例的绑定属性、绑定方法和__slots__
查看>>
通过js对表单对象的便捷获取
查看>>
TCP/IP、HTTP的区别
查看>>
浏览器同源策略深入
查看>>
java中的内部类
查看>>
C++/C++11中std::numeric_limits的使用
查看>>
Django Admin后台管理模块的使用
查看>>
union
查看>>
药品相关表
查看>>
酱板鸭
查看>>
windows上同时安装两个版本的mysql数据库
查看>>
Scrapy之CrawlSpider
查看>>
1.目录及文件的命令
查看>>
React Native小白入门学习路径——三
查看>>
PHP中$_REQUEST,$_POST,$_GET的区另和联系_2015_1025
查看>>
Android重构杂感
查看>>
如何分析性能测试需求
查看>>