android 自定义spnner弹出框,PopupWindow,ListView实现自定义Spinner
最终的效果图,点击+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相关推荐
- android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog
本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...
- c语言获取安卓弹窗,Android实现信息弹出框
本文实例为大家分享了Android实现信息弹出框的具体代码,供大家参考,具体内容如下 layout下的dialog_common_layout.xml android:layout_width=&qu ...
- html自定义js程序,JS中微信小程序自定义底部弹出框
实现微信小程序底部弹出框效果,代码分为html,css和js两部分,具体代码详情大家参考下本文. html CSS .commodity_screen { width: 100%; height: 1 ...
- android tv 悬浮窗口,android TV的自定义关机弹出框
关机的时候会走power的相关部分 首先我们监听power键的文件是在frameworks\base\services\core\java\com\android\server\policy\Phon ...
- Android自定义退出弹出框
在应用中不是很常见自定义的退出弹出框,游戏中我们经常能看到.下面就看下是怎么实现的,首先我们定义一个方法,当用户点击退出的时候调用这个方法. 1 private void dialog() { 2 f ...
- Acitivity(页面)之间的跳转,ProgressBar 进度条,PopupWindow 弹出框,Dialog 对话框,Spinner下拉框
Acitivity(页面)之间的跳转 Acitivity(页面)之间的跳转需要使用到 Intent(意图) Intent intent = new Intent(MainActivity.this(从 ...
- 自定义底部弹出的PopupWindow【So Easy!】
第一步: 创建自己的xml文件. <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- 如何在腾讯地图上设置多种颜色的点位和自定义背景弹出框
1.引入地图js <script >var now = new Date();var number = now.getYear().toString() + now.getMonth(). ...
- android实现底部弹出框与软键盘冲突(全面屏虚拟键适配)
普通的底部弹出框大家都可以很熟练的使用了,无非是一个diaolog的事情,但是当dialog中含有输入框之后,软键盘与dialog的冲突可以说是十分坑了...更别说加上底部虚拟键了,这么一个小功能磨得 ...
最新文章
- 线段树 ---- 牛客多校2021多校第6场 H Hopping Rabbit 扫描线
- oracle编程艺术在线,oracle编程艺术笔记-1
- MVC系列——一个异常消息传递引发的思考
- Python之类的继承
- 线性表:链式队列算法实现
- 泰勒展开与找第一项系数不为1的解题策略
- 再学 GDI+[45]: 文本输出 - 文本呈现质量
- HTML day02(html列表与菜单的制作)
- 【Grasshopper基础1】怎样制作一个Grasshopper电池 / 二次开发基础
- 斗鱼基于etcd和ZooKeeper的注册中心实践案例
- linux刷新解析,如何在Linux(和FreeBSD)上刷新DNS解析器缓存
- varchar与varchar2区别
- bad sqlldr java_java sqlldr使用
- 骑士cms最新全局SQL注入(官方奇葩修复案例)
- 冬令营二月七日工作日志
- 【刷题】BZOJ 4698 Sdoi2008 Sandy的卡片
- 蜂鸟E203图像识别--未完待续
- 限时免费 | 12月6日,广州保利洲际酒店,ABC Summit 2018云智峰会来了!
- 支付宝、财付通、快钱 三种功能特点的不同
- 淘宝接口调用,面向对象