最终的效果图,点击+86弹出popup

这里写图片描述

PupupWindow的布局文件

为一个ListView 作为pupup的主体内容

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/register_lv_zone"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:divider="#30DDDDDD"

android:dividerHeight="1dp"

android:scrollbars="none"

android:scrollingCache="false"

/>

ListView的item布局文件

作为每一个选项

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@android:color/white"

android:id="@+id/zone_item_parent"

>

android:id="@+id/spinner_address"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_margin="20dp"

android:textColor="#000"

/>

android:id="@+id/spinner_zone"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_margin="20dp"

android:textColor="#000"

/>

初始化Pupup

// PopupWindow 的页面布局 包含一个listview

View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_my_spinner, null);

mRegister_lv_zone = (ListView) view.findViewById(R.id.register_lv_zone);

// 初始化 popupW

mPopupWindow = new PopupWindow(RegisterActivity.this);

// 设置高度为 自适应

mPopupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

mPopupWindow.setWidth(ScreenUtils.getScreenW(RegisterActivity.this) - UIUtils.getDimen(R.dimen.register_edittext_margin_left) * 2);

// 将view添加到 popup里面

mPopupWindow.setContentView(view);

mPopupWindow.setBackgroundDrawable(new PaintDrawable());

mPopupWindow.setFocusable(true);

设置消失Dismiss的监听

// popupWindow消失的监听

mPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {

@Override

public void onDismiss() {

// 处理你要做的事情

}

});

开启popupWindow

mRegisterZone.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//设置在那个控件下面显示 mPopupWindow

mPopupWindow.showAsDropDown(mRegisterZone);

}

});

为ListView设置适配器

MySpinnerArrayAdapter mySpinnerArrayAdapter = new MySpinnerArrayAdapter();

mRegister_lv_zone.setAdapter(mySpinnerArrayAdapter);

// 设配器

class MySpinnerArrayAdapter extends BaseAdapter {

@Override

public int getCount() {

return mSpinnerZone.length;

}

@Override

public Object getItem(int position) {

return mSpinnerZone[position];

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder;

if (convertView == null) {

LayoutInflater inflater = LayoutInflater.from(getApplicationContext());

convertView = inflater.inflate(R.layout.item_spinner, parent, false);

viewHolder = new ViewHolder(convertView);

convertView.setTag(viewHolder);

} else {

viewHolder = (ViewHolder) convertView.getTag();

}

viewHolder.mSpinnerAddress.setText(mSpinnerAddress[position]);

viewHolder.mSpinnerZone.setText(mSpinnerZone[position]);

return convertView;

}

class ViewHolder {

TextView mSpinnerAddress;

TextView mSpinnerZone;

private final RelativeLayout mZone_item_parent;

ViewHolder(View view) {

mSpinnerAddress = (TextView) view.findViewById(R.id.spinner_address);

mSpinnerZone = (TextView) view.findViewById(R.id.spinner_zone);

mZone_item_parent = (RelativeLayout) view.findViewById(R.id.zone_item_parent);

}

}

}

可以给ListView设置item点击监听隐藏popup

mRegister_lv_zone.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position, long id) {

mPopupWindow.dismiss();

}

});

android 自定义spnner弹出框,PopupWindow,ListView实现自定义Spinner相关推荐

  1. android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog

    本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...

  2. c语言获取安卓弹窗,Android实现信息弹出框

    本文实例为大家分享了Android实现信息弹出框的具体代码,供大家参考,具体内容如下 layout下的dialog_common_layout.xml android:layout_width=&qu ...

  3. html自定义js程序,JS中微信小程序自定义底部弹出框

    实现微信小程序底部弹出框效果,代码分为html,css和js两部分,具体代码详情大家参考下本文. html CSS .commodity_screen { width: 100%; height: 1 ...

  4. android tv 悬浮窗口,android TV的自定义关机弹出框

    关机的时候会走power的相关部分 首先我们监听power键的文件是在frameworks\base\services\core\java\com\android\server\policy\Phon ...

  5. Android自定义退出弹出框

    在应用中不是很常见自定义的退出弹出框,游戏中我们经常能看到.下面就看下是怎么实现的,首先我们定义一个方法,当用户点击退出的时候调用这个方法. 1 private void dialog() { 2 f ...

  6. Acitivity(页面)之间的跳转,ProgressBar 进度条,PopupWindow 弹出框,Dialog 对话框,Spinner下拉框

    Acitivity(页面)之间的跳转 Acitivity(页面)之间的跳转需要使用到 Intent(意图) Intent intent = new Intent(MainActivity.this(从 ...

  7. 自定义底部弹出的PopupWindow【So Easy!】

    第一步: 创建自己的xml文件. <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  8. 如何在腾讯地图上设置多种颜色的点位和自定义背景弹出框

    1.引入地图js <script >var now = new Date();var number = now.getYear().toString() + now.getMonth(). ...

  9. android实现底部弹出框与软键盘冲突(全面屏虚拟键适配)

    普通的底部弹出框大家都可以很熟练的使用了,无非是一个diaolog的事情,但是当dialog中含有输入框之后,软键盘与dialog的冲突可以说是十分坑了...更别说加上底部虚拟键了,这么一个小功能磨得 ...

最新文章

  1. 线段树 ---- 牛客多校2021多校第6场 H Hopping Rabbit 扫描线
  2. oracle编程艺术在线,oracle编程艺术笔记-1
  3. MVC系列——一个异常消息传递引发的思考
  4. Python之类的继承
  5. 线性表:链式队列算法实现
  6. 泰勒展开与找第一项系数不为1的解题策略
  7. 再学 GDI+[45]: 文本输出 - 文本呈现质量
  8. HTML day02(html列表与菜单的制作)
  9. 【Grasshopper基础1】怎样制作一个Grasshopper电池 / 二次开发基础
  10. 斗鱼基于etcd和ZooKeeper的注册中心实践案例
  11. linux刷新解析,如何在Linux(和FreeBSD)上刷新DNS解析器缓存
  12. varchar与varchar2区别
  13. bad sqlldr java_java sqlldr使用
  14. 骑士cms最新全局SQL注入(官方奇葩修复案例)
  15. 冬令营二月七日工作日志
  16. 【刷题】BZOJ 4698 Sdoi2008 Sandy的卡片
  17. 蜂鸟E203图像识别--未完待续
  18. 限时免费 | 12月6日,广州保利洲际酒店,ABC Summit 2018云智峰会来了!
  19. 支付宝、财付通、快钱 三种功能特点的不同
  20. 淘宝接口调用,面向对象

热门文章

  1. springboot redis shiro 实现 单点登录
  2. 2019金球奖——梅西
  3. 微信支付 签名算法 sign node实现
  4. jquery mobile 从一个html的page跳转到另一个html的page
  5. OpenJDK8基础类库包清单
  6. ubuntu等linux系统给windows共享文件
  7. Python四大金刚之四:集合
  8. java文件替换一行数据_用Golang替换文件中的一行
  9. 扩展插件_Adobe扩展工具插件系列
  10. 2019最新Python爬虫高频率面试题总结(一)