定义出第一个图片的布局和弹出框(一个listView)的布局,,这里就不在多说了~ListView需要自己定义一个MyspinnerAdapter~做好这些准备之后,就是弹出框的实现了~

 protected void onCreate(Bundle savedInstanceState) {
03         super.onCreate(savedInstanceState);
04         setContentView(R.layout.activity_main);
05         textView = (TextView) findViewById(R.id.text);
06         imgView = findViewById(R.id.arrowbut);
07         // 实例化一个List,添加数据
08         list = new ArrayList<String>();
09         list.add("第一展厅");
10         list.add("第二展厅");
11         list.add("第三展厅");
12         // 实例化一个适配器,list的数据作为Adapter的数据
13         adapter = new MyspinnerAdapter(this, list);
14         // 默认设置下拉框的标题为数据的第一个
15         textView.setText((CharSequence) adapter.getItem(0));
16         spinnerlayout = (LinearLayout) findViewById(R.id.spinnerid);
17         // 点击右侧按钮,弹出下拉框
18         imgView.setOnClickListener(new OnClickListener() {
19  
20             @Override
21             public void onClick(View v) {
22  
23                 showWindow(v);
24  
25             }
26         });
27     }
28  
29     @SuppressWarnings("deprecation")
30     public void showWindow(View v) {
31         // 找到布局文件
32         layout = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.mypinner_dropdown, null);
33         // 实例化listView
34         listView = (ListView) layout.findViewById(R.id.listView);
35         // 设置listView的适配器
36         listView.setAdapter(adapter);
37         // 实例化一个PopuWindow对象
38         popupWindow = new PopupWindow(v);
39         // 设置弹框的宽度为布局文件的宽
40         popupWindow.setWidth(spinnerlayout.getWidth());
41         // 高度随着内容变化
42         popupWindow.setHeight(LayoutParams.WRAP_CONTENT);
43         // 设置一个透明的背景,不然无法实现点击弹框外,弹框消失
44         popupWindow.setBackgroundDrawable(new BitmapDrawable());
45         // 设置点击弹框外部,弹框消失
46         popupWindow.setOutsideTouchable(true);
47         // 设置焦点
48         popupWindow.setFocusable(true);
49         // 设置所在布局
50         popupWindow.setContentView(layout);
51         // 设置弹框出现的位置,在v的正下方横轴偏移textview的宽度,为了对齐~纵轴不偏移
52         popupWindow.showAsDropDown(v, -textView.getWidth(), 0);
53         // listView的item点击事件
54         listView.setOnItemClickListener(new OnItemClickListener() {
55  
56             @Override
57             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
58                 // TODO Auto-generated method stub
59                 textView.setText(list.get(arg2));// 设置所选的item作为下拉框的标题
60                 // 弹框消失
61                 popupWindow.dismiss();
62                 popupWindow = null;
63             }
64         });

spinner用法:

this.bank_name = (Spinner) super.findViewById(R.id.spinnerCityStatic);

this.bank_name.setOnItemSelectedListener(new OnItemSelectedListenerImpl());

// 下拉框选择事件
private class OnItemSelectedListenerImpl implements OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String city = parent.getItemAtPosition(position).toString();
Toast.makeText(BangBankActivity.this, "选择的城市是:" + city,
Toast.LENGTH_LONG).show();
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}

}

Android UI自定义Spinner下拉框(用popuwindow实现)-转的更多相关文章

  1. Android 自定义spinner下拉框实现的实现

    请支持原创:http://blog.csdn.NET/geniuseoe2012/article/details/8723702 说到Android下拉框spineer,框架中虽有现成的控件,但实际效 ...

  2. Android自定义spinner下拉框实现的实现

    一:前言 本人参考博客:http://blog.csdn.net/jdsjlzx/article/details/41316417 最近在弄一个下拉框,发现Android自带的很难实现我的功能,于是去 ...

  3. Android 自定义spinner下拉框实现

    一:前言本人参考博客:http://blog.csdn.net/jdsjlzx/article/details/41316417 最近在弄一个下拉框,发现Android自带的很难实现我的功能,于是去网 ...

  4. 一分钟掌握Android spinner下拉框

    Android 自带的spinner下拉框控件是一个不错的系统控件.主要有两种实现方式: 1.静态的spinner 在res\values中加入一个city资源数组文件 2 <resources ...

  5. Bootstrap Flat UI的select下拉框显示不出来 问题解决

    Bootstrap Flat UI的select下拉框显示不出来?看这里,恰巧今天我也遇到了这个问题: 点击Messages后并没有出现下拉列表,然而官网的index.html却能显示出来. 经过一番 ...

  6. 自定义SWT控件一之自定义单选下拉框

    一.自定义下拉控件 自定义的下拉框,是自定义样式的,其中的下拉框使用的是独立的window,非复选框的下拉框双击单机其它区域或选择完之后,独立window构成的下拉框会自动消失. package co ...

  7. Android中自定义xml文件给Spinner下拉框赋值并获取下拉选中的值

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...

  8. Android Spinner 下拉框简单应用 详细注解

    目录 Android Spinner 代码部分 Spinner代码介绍 核心代码 说在最后 @ Android Spinner Spinner 提供下拉列表式的输入方式,该方法可以有效节省手机屏幕上的 ...

  9. Android实现三级联动下拉框 下拉列表spinner

    Android实现(省.市.县)三级联动下拉框 下拉列表spinner 转载请注明出处: http://www.goteny.com/articles/2013/11/46.html http://w ...

随机推荐

  1. caffe layer层cpp、cu调试经验和相互关系

    对于layer层的cpp文件,你可以用LOG和printf.cout进行调试,cu文件不能使用LOG,可以使用cout,printf. 对于softmaxloss的layer层,既有cpp文件又有cu ...

  2. 数据库_6_SQL基本操作——库操作

    SQL基本操作——库操作:对数据库的增删改查 一.新增数据库(创建) 基本语法:create database 数据库名字 [库选项]: 库选项用来约束数据库,分为两个选项:1.字符集设定:chars ...

  3. WINDOWS-基础:WINDOWS常用API

    1.窗口信息 //MS 为我们提供了打开特定桌面和枚举桌面窗口的函数. hDesk=OpenDesktop(lpszDesktop,,FALSE,DESKTOP_ENUMERATE); //打开我们默 ...

  4. odoo10 fields.Selection 根据权限显示不同的selection内容

    摘要:一般作为下拉选项,selection的选项内容是固定,针对一些特殊要求,根据权限组显示不同的selection内容的,可以参考odoo源码的. 前提:基于 odoo10.0 的源码 参考源码1: ...

  5. git 不完全教程

    概念 工作目录:当前所见,Working directory 暂存区域:以后要提交到仓库的文件,称为Index或者staging area Git 仓库:持久化存储快照的地方,HEAD指针所指向的地方 ...

  6. http常用状态吗以及分别代表什么意思?

    http常用状态码: 状态码 定义 说明 1xx 信息 街道请求继续处理 2xx 成功 成功的收到.理解.接受 3xx 重定向 浏览器需要执行某些特殊处理一完成请求 4xx 客户端错误 请求的语法有问 ...

  7. python 多线程 压测 mysql

    #!/usr/bin/env python # encoding: utf-8 #@author: 东哥加油 #@file: sthread.py #@time: 2018/9/17 17:07 im ...

  8. linux内核启动修复

    linux内核启动修复 首先看一下linux内核重要文件grub.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # gru ...

  9. GIMP矩形选框预圆形选框

    矩形选框,四种框选模式,了解一下 Repalace the current selector Add to the current selection (shift键) Subtract from t ...

  10. TB平台搭建之二

    主要想记录关于debug问题: 一般我会1.定位问题所在位置比如使能信号错误.地址读写错误.数据流pipeline错误.... 2.首先看问题的源头(对应信号)是否还正确,比如出现XX要查看她的第一级 ...