android 自定义spnner弹出框,PopupWindow,ListView实现自定义Spinner

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

34ba6a528748

这里写图片描述

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();

}

});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hdu 6026 Deleting Edges(最短路计数)

题目链接:hdu 6026 Deleting Edges 题意: 给你n个点,和一个邻接矩阵,非0表示有边,0表示没边。 现在让你删一些边,构成一棵树,使得每个点到0这个点的距离为没删边之前的最短路。 问有多少棵这样的…

android 服务端 导入工程,如何导入与配置从网上下载的android源代码及服务器端源代码...

将Android项目导入import进Eclipse。 注意SDK版本是否匹配 。 服务器部署到Tomcat下。 你得在数据库中将这个点菜系统的数据库和表建好,或者导入。在服务器的代码中修改好你的数据库名和密码。首先看你的服务器配置的是什么环境 一般就2种 linux系统 window系统&…

mysql: 模糊查询 feild like keyword or feild like keyword , concat(feild1,feild2,feild3) like keyword...

mysql: 模糊查询 feild like %keyword% or feild like% keyword% , 或者 concat(feild1,feild2,feild3) like %keyword% 转载于:https://www.cnblogs.com/achengmu/p/6877852.html

android按钮控件常见问题,Android的基本控件和Activity的应用总结

Android的基本控件常用界面控件TextView 显示文本信息button 普通按钮EditText 可编辑的文本框组件(输入框)ImageView 用于显示图片ImageBUtton 图片按钮CheckBox 复选框RadioGroup 单选按钮组Spinner 下拉列表组件ProgressBar进度条SeekBar拖动条RatingBar评分组件ListView列表…

Xamarin XAML语言教程构建进度条ProgressBar

Xamarin XAML语言教程构建进度条ProgressBar Xamarin XAML语言教程构建进度条ProgressBar,ProgressBar被称为进度条,它类似于没有滑块的滑块控件。进度条总是水平放置的。本节将讲解如何使用进度条。注意:进度条在各个平台下基本相同&#xf…

android tv字体,best登陆「永久地址0365.tv」android默认字体android使用代码使用新的字体的常用代码...

页面类类名称:MainActivitypackage com.example.android_fonts_test;import android.support.v7.app.ActionBarActivity;import android.content.Context;import android.graphics.Typeface;import android.os.Bundle;import android.view.Menu;import android.view…

android 交叉编译so,Android交叉编译htop和使用方法

htop来源于top,top是Unix/linux下功能强大的性能检测工具之一,用于实时检测并统计进程的属性和状态,基于ncurses库,可上显示文字界面。但是top已经非常陈旧,不支持鼠标点击操作,不支持查看进程的各个子线程…

Java笔记(08):面向对象--抽象类

1、抽象类概述: 1 /*2 抽象类的概述:3 动物不应该定义为具体的东西,而且动物中的吃,睡等也不应该是具体的。4 我们把一个不是具体的功能称为抽象的功能,而一个类中如果有抽象的功能,该…

mac删除android sd卡,如何从mac完全删除android及其所有文件?

前一段时间我试图让科尔多瓦工作,但android模拟器永远不会启动。它只是挂着一个黑色的屏幕。如何从mac完全删除android及其所有文件?我原来是用brew install android-sdk安装的。然后我读了一个糟糕的地方。所以我已经删除它并安装了Android Studio。无论…

201521123023《Java程序设计》第13周学习总结

1. 本周学习总结 (1)网络中为了进行数据交换(通信)而建立的规则、标准或约定(语义语法规则)称之为协议(常用http/ftp) (2)大致熟悉了TCP协议,但是UDP怎么辣么蓝&#xff…

Android中怎获取json,Android应用中如何解析获取的json数据

Android应用中如何解析获取的json数据发布时间:2020-11-24 17:10:08来源:亿速云阅读:107作者:Leah这篇文章将为大家详细讲解有关Android应用中如何解析获取的json数据,文章内容质量较高,因此小编分享给大家…

Hibernate4之session核心方法

在学习session的核心方法之前,我们先了解下hibernate中几种对象的状态: 暂时状态:这样的状态就好像咱们公司请的暂时员工一样,他在公司里没有相关的资料和id。 特点:在使用代理主键的情况下, OID 通常为 null 不…

Android 同步锁死锁,Android多线程研究(3)——线程同步和互斥及死锁

为什么会有线程同步的概念呢?为什么要同步?什么是线程同步?先看一段代码:package com.maso.test;public class ThreadTest2 implements Runnable{private TestObj testObj new TestObj();public static void main(String[] args)…

QML与C++交互:登陆界面设计

QML与C交互:登陆界面设计 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:Qt5.2.1 说明: QML设计前台界面,C后台负责逻辑 效果图: 源码: 前台qml文件 login.qml /******************************************************…

html怎么在字体中加波浪线,CSS3实现文字波浪线效果

前言css的设计之巧妙,实现之精妙,细细寻味,其妙非凡,妙不可言。这波浪线,取巧的运用了linear-gradient属性,合角度、颜色、位置于一体,配合background-size,background-repeat&#…

NET Core 指令启动

ASP.NET Core 是新一代的 ASP.NET,早期称为 ASP.NET vNext,并且在推出初期命名为ASP.NET 5,但随着 .NET Core 的成熟,以及 ASP.NET 5的命名会使得外界将它视为 ASP.NET 的升级版,但它其实是新一代从头开始打造的 ASP.N…

html文本显示状态代码中,HTML文本显示状态代码中,表示?

文本如何大小判别偏心受压剪力墙的。能源能量然资提供的自是指源,显示如(,显示能、能、能、能、、热等的械能是机生物原子光能化学总称,不可能源然界的一可再生能于自源可源和再生分为存在次能。状态中表并发儿麻体温生的婴幼易发间低醉期症(…

1807. [NOIP2014]寻找道路P2296 寻找道路

题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通。 2 .在满足…

html页面 wordpress,WordPress纯代码实现前端页面HTML完美压缩

前言:压缩HTML页面的好处就是略微提升页面加载速度,并给那些爱扒皮的缺德玩意制造些许麻烦。好了将如下代码添加在functions.php中即可://压缩WordPress前端html代码function wp_compress_html(){function wp_compress_html_main ($buffer){$…

js中的作用域

关于变量和参数问题: 函数外面定义的变量是全局变量,函数内可以直接使用。 在函数内部没有使用var定义的变量则为全局变量,在函数内使用var关键字定义的变量是局部变量,即出了函数外边无法获取。 js函数定义的参数没有默认值&…