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

  1. spinner.setSelection(-1,true);

也有设置如下:

  1. spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  2. @Override
  3. public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  4. /**
  5. * 设置item的字体颜色
  6. */
  7. if(isFrist){
  8. isFrist=false;
  9. }else{
  10. TextView textView= (TextView) view;
  11. textView.setTextColor(getResources().getColor(R.color.hei));
  12. Toast.makeText(MainActivity.this,""+parent.getItemIdAtPosition(position),Toast.LENGTH_SHORT).show();
  13. }
  14. }
  15. @Override
  16. public void onNothingSelected(AdapterView<?> parent) {
  17. }
  18. });

  

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

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

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

  1.  spinner.setSelection(1,true);
  2. spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  3. @Override
  4. public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  5. /**
  6. * 设置item的字体颜色
  7. */
  8. TextView textView= (TextView) view;
  9. textView.setTextColor(getResources().getColor(R.color.hei));
  10. Toast.makeText(MainActivity.this,""+parent.getItemIdAtPosition(position),Toast.LENGTH_SHORT).show();
  11. }
  12. @Override
  13. public void onNothingSelected(AdapterView<?> parent) {
  14.  
  15. }
  16. });

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

  1. TextView textView2;
  2. private ListPopupWindow popupWindow;
  3. private List<String> strings;

  

  1.   textView2= (TextView) findViewById(R.id.textView2);
  2. strings = new ArrayList<String>();
  3. strings.add("item1");
  4. strings.add("item2");
  5. strings.add("item3");
  6.  
  7. popupWindow = new ListPopupWindow(this);
  8. popupWindow.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strings));
  9. popupWindow.setAnchorView(textView2);
  10. popupWindow.setWidth(LinearLayout.LayoutParams.WRAP_CONTENT);
  11. popupWindow.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
  12. popupWindow.setModal(true);
  13. popupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  14.  
  15. @Override
  16. public void onItemClick(AdapterView<?> parent, View view,
  17. int position, long id) {
  18.  
  19. textView2.setText(strings.get(position));
  20. popupWindow.dismiss();
  21. Toast.makeText(MainActivity.this,""+textView2.getText().toString(),Toast.LENGTH_SHORT).show();
  22.  
  23. }
  24. });
  25. textView2.setOnClickListener(new View.OnClickListener() {
  26. @Override
  27. public void onClick(View v) {
  28. popupWindow.show();
  29.  
  30. }
  31. });

  

3.实现效果:

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

下拉效果对比:

Spinner默认选择问题的更多相关文章

  1. Android Spinner列表选择框

    Spinner Spinner是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源. 1.直接设置数组源 在res/values/strings.xml中设置数组源 ...

  2. EXT 省市三级联动及默认选择

    var provinceStore = Ext.create('Ext.data.Store', { fields: ['id', 'name'], proxy: { type: 'ajax', ur ...

  3. TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。

    TRUNCATE 删除表,无法回退.默认选择为整个表的内容,所以不能加条件.DELETE 删除表,可以回退.可以带where 条件.建议使用delete.但是TRUNCATE 删除表数据比delete ...

  4. jSP的3种方式实现radio ,checkBox,select的默认选择值。

    jSP的3种方式实现radio ,checkBox,select的默认选择值.以radiao 为例:第一种方式:在jsp中使用java 脚本,这个方法最直接,不过脚本太多,不容易维护<%Stri ...

  5. java总结:Java中获取系统时间(年、月、日)以及下拉菜单默认选择系统年、月、日的方法

    <!-- 获取系统当前的年.月.日 --> <%@ page import="java.util.*"%> <% Calendar calendar= ...

  6. ngular ionic select ng-options 默认选择第一个值的写法

    1. html <select ng-model="selectOrderState" style="border:none;left:0" ng-opt ...

  7. php一些单选、复选框的默认选择方法(示例)

    转载 http://www.php.cn/php-weizijiaocheng-360029.html 一. radio和checkbox及php select默认选择的实现代码 1.radio单选框 ...

  8. 用Jquery实现修改页面selecte标签的默认选择

    在WEB开发中,最基础的也是用的最多的就是数据库的增删改查,修改往往以为的小部分的改动,所以我们往往是在表单中填充以前的内容然后显示给用户进行修改操作. 在填充默认内容的时候对于input标签我们往往 ...

  9. Csharp: TreeView 初始化设置默认选择节点

    /// <summary> /// 设置查找的节点为选定节点 /// 涂聚文 /// 2013-07-15 /// </summary> /// <param name= ...

随机推荐

  1. java加密解密算法位运算

    一.实例说明 本实例通过位运算的异或运算符 “ ^ ” 把字符串与一个指定的值进行异或运算,从而改变每个字符串中字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,异或运算 ...

  2. Vmware安装Linux系统的vmware-tools

    我们应对都用vmware虚拟机,如果虚拟机是windows系统,每次虚拟机下方提示安装vmware-tools时,我们只需要点击安装即可. 但如果虚拟机安装的是linux系统的时候,发现就没一样了. ...

  3. 开发一个 App 有多难?说出来你可能不信!

    上图为程序员客栈儿童类视频APP 1.开发一个APP有多难?说实话,单纯地从开发来说,开发一个APP没有那么难.如果一款APP的基本功能点确定了,开发时间一般为1-2个月就完成了,费用大约5-10万的 ...

  4. RabbitMQ学习之集群消息可靠性测试

    之前介绍过关于消息发送和接收的可靠性:RabbitMQ学习之消息可靠性及特性 下面主要介绍一下集群环境下,rabbitmq实例宕机的情况下,消息的可靠性.验证rabbitmq版本[3.4.1]. 集群 ...

  5. jquery里面的选择器

    jQuery 元素选择器 jQuery 使用 CSS 选择器来选取 HTML 元素. $("p") 选取 <p> 元素. $("p.intro") ...

  6. Java Mybatis 缓存介绍

    0 引言 本文主要介绍有关MyBatis的缓存. 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 1. 一级缓存: 基于PerpetualCache 的 HashMap本 ...

  7. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)C. Laboratory Work

    Anya and Kirill are doing a physics laboratory work. In one of the tasks they have to measure some v ...

  8. nyoj254-编号统计

    编号统计 时间限制:2000 ms  |  内存限制:65535 KB 难度:2 描述 zyc最近比较无聊,于是他想去做一次无聊的统计一下.他把全校同学的地址都统计了一下(zyc都将地址转化成了编码) ...

  9. FCN图像分割

    一. 图像语义分割 传统的图像分割方法主要包括以下几种: 1)基于边缘检测 2)基于阈值分割 比如直方图,颜色,灰度等 3)水平集方法 这里我们要说的是语义分割,什么是语义分割呢?先来看张图: 将目标 ...

  10. PHP学习总结(8)——PHP入门篇之WAMPServer集成环境安装和配置

    WampServer就是Windows Apache Mysql PHP集成安装环境,即在window下的apache.php和mysql的服务器软件.WampServer是一款由法国人开发的Apac ...