用PopupWindow实现下拉列表

Android自定义下拉框(PopupWindow实现) Android自定义下拉框,用PopupWindow实现 立即下载

用 PopupWindow(View contentView, int width, int height),添加所需要的View,然后设置popupWindow,再让它显示在某个控件下方

布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#10000000"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/tv_content"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:layout_weight="1"
            android:background="@color/white"
            android:padding="6dp"
            android:textColor="#cc000000"
            android:textSize="17sp" />

        <ImageButton
            android:id="@+id/btn_popup_spinner"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginRight="10dp"
            android:layout_gravity="center_vertical"
            android:background="@drawable/down_arrow" />
    </LinearLayout>
</LinearLayout>

代码:

public class PopupSpinnerActivity extends Activity {
	private TextView tv_content;
	private PopupWindow popupMenu;
	private ListView mListView; //下拉列表的ListView
	private ArrayList<String> contentListData;
	private MyPopupDataAdapter adapter;
	private ImageButton btn_popupmenu;


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_popup_spinner);

		initPopupSpinnerView();
}

     /**
	 * 初始化控件
	 */
	private void initPopupSpinnerView() {
		tv_content = (TextView) findViewById(R.id.tv_content);
		btn_popupmenu = (ImageButton) findViewById(R.id.btn_popup_spinner);
//		tv_content.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//加下划线
//		tv_content.getPaint().setAntiAlias(true); //抗锯齿
		btn_popupmenu.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				showSelectPoupWindow();
			}
		});
	}

	/**
	 * 设置下拉列表及内容
	 */
	private void showSelectPoupWindow() {
		initPopupListData();

		popupMenu = new PopupWindow(mListView, tv_content.getWidth() + btn_popupmenu.getWidth(), 200);
		popupMenu.setOutsideTouchable(true);//设置外部可被点击
		popupMenu.setFocusable(true);
		popupMenu.setBackgroundDrawable(new BitmapDrawable());
		popupMenu.showAsDropDown(tv_content, 0, 0); //对齐此控件,后两个参数是距离控件的左和上下距离
	}

	private void initPopupListData() {
		mListView = new ListView(this);
		mListView.setDividerHeight(1);
		mListView.setVerticalScrollBarEnabled(false); //消除滚动条
		//mListView.setBackgroundResource(R.drawable.popup_listview_background);

		contentListData = new ArrayList<String>();
		for (int i = 0; i < 20; i++) {
			String content = "popup list item data  " + i;
			contentListData.add(content);
		}

		adapter = new MyPopupDataAdapter();
		mListView.setAdapter(adapter);
		mListView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				Toast.makeText(getApplicationContext(), "点击了item " + position, Toast.LENGTH_SHORT).show();
				String itemContent = contentListData.get(position);
				tv_content.setText(itemContent);
				popupMenu.dismiss();
			}
		});
	}

	public class MyPopupDataAdapter extends BaseAdapter {

		@Override
		public int getCount() {
			return contentListData == null ? 0 : contentListData.size();
		}

		@Override
		public Object getItem(int position) {
			return contentListData.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(final int position, View convertView, ViewGroup parent) {
			ViewHolder holder = null;
			if (convertView == null) {
				convertView = View.inflate(PopupSpinnerActivity.this, R.layout.popup_list_item, null);
				holder = new ViewHolder();
				holder.tv_value = (TextView) convertView.findViewById(R.id.tv_value);
				holder.btn_delete = (ImageButton) convertView.findViewById(R.id.btn_delete);
				convertView.setTag(holder);
			} else {
				holder = (ViewHolder) convertView.getTag();
			}
			holder.tv_value.setText(contentListData.get(position));
			holder.btn_delete.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					contentListData.remove(position);
					adapter.notifyDataSetChanged();
					if (contentListData.size() == 0) {
						popupMenu.dismiss();
					}
				}
			});
			return convertView;
		}

		class ViewHolder {
			TextView tv_value;
			ImageButton btn_delete;
		}
	}
}


自定义PopupWindow,实现spinner下拉选择列表 通过自定义PopupWindow的方式,实现Spinner下拉选择列表的控件。 立即下载

相关推荐

交流异步机VVVF变频控制simulink/matlab仿真分析

VVVF,是Variable Voltage and Variable Frequency的缩写, 意为:可变电压、可变频率,也就是变频调速系统。 VVVF控制的逆变器连接电机,通过同时改变频率和电压,达到磁通恒定(可以用反电势/频率近似表征)和控制电机转速(和频率成正比)的目的,所以多应用在变频器中,属于工业自动化领域。

Ezekiel_Mok的博客 4209

使用PopupWindow实现Spinner的下拉列表

系统自带的Spinner实在不好用,所以我们用PopupWindow来实现同样的效果1、布局 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical"

麻薯帅比的博客 3689

Xilinx IP核 Block Memory Generator v8.4 的使用

本文主要介绍如何使用并初始化 Xilinx 提供的IP核 Block Memory Generator v8.4`,为了确保成功初始化,还对其进行了一个简单的仿真,更多细节请参考官方手册。

高阶近似的博客 1万+

android——spinner下拉弹窗、popupwindow下拉弹窗列表

android——spinner下拉弹窗

wy313622821的博客 1786

嵌入式通信协议----Wi-Fi协议详解(一)

Wi-Fi,又称“无线网络”,是Wi-Fi联盟的商标,一个基于IEEE 802.11标准的无线局域网技术。“Wi-Fi”常写作“WiFi”或“Wifi”,但是这些写法并没有被Wi-Fi联盟认可。Wi-Fi产品经由Wi-Fi联盟的一家独立授权测试实验室进行严格测试,产品成功通过测试后,授予制造商或销售商使用Wi-Fi标志、Wi-Fi CERTIFIED标志和相关商标,Wi-Fi联盟使用术语“Wi-Fi CERTIFIED”来称呼这类通过认证的产品。

聪聪的成长之路 1656

W5500+STM32F103C8T6进行TCP通信(modbus)

一路生花一、w5500资料二、modbus通信三、从机代码四、总结五、参考 一、w5500资料 w5500的资料就放在下面了,单纯的客户端和其他模式上面有教程 https://www.aliyundrive.com/s/enPnnZgNtpE 二、modbus通信 Modbus RTU通信时使用的数据帧结构如下图,而Moubus TCP通信的数据帧和这个稍微不一样,没有crc检验,因为tcp本就是一种可靠传输协议 这里是Modbus TCP数据帧 公共功能码定义 三、从机代码

junseven164的博客 5778

android PopupWindow实现从底部弹出或滑出选择菜单或窗口

android PopupWindow实现从底部弹出或滑出选择菜单或窗口   http://www.open-open.com/lib/view/open1379383271818.html   http://blog.youkuaiyun.com/centralperk/article/details/7494441

weixin_33923762的博客 141

带隙基准电路设计实战:从HSPICE仿真到Virtuoso版图全流程解析

在模拟集成电路设计中,基准电压源是确保系统精度与稳定性的核心模块。其基本原理在于巧妙结合具有正、负温度系数的电压,通过加权求和实现近似零温度系数的稳定输出,这一特性对于高精度数据转换器、电源管理芯片等至关重要。从工程实践角度,利用HSPICE进行深入的直流工作点、温度扫描和工艺角仿真,是验证电路性能、优化温度系数和电源抑制比的关键步骤。而借助Cadence Virtuoso进行版图实现时,必须重点关注电阻与BJT的匹配布局、敏感节点的保护以及电源完整性设计,以确保设计意图在硅片上得以准确呈现。通过完整的从前

weixin_29181861的博客 287

自定义PopupWindow实现下拉菜单选项效果

在android 项目中,有时候我们要用到下拉菜单的效果,比如,如下,这种界面,这时候,我们就可以用自定义PopupWindow的方式来实现这种功能了。下实例还带了一个界面透明度变化的功能。 首先我们自定义一个平滑过渡透明度的popupWindow,实现打开popupWidow背景透明值变化的效果 public class StyleAlphaPopWind

lb1207087645的博客 4209

【STK】手把手教你利用STK进行光电红外仿真03-STK/EOIR模块属性之二 导弹等目标的EOIR设置

上一节介绍了如何设置传感器的通用属性和空间、光学、光谱、辐射四种专项属性。这一节介绍如果对导弹等目标的EOIR属性进行修改。

weixin_44184852的博客 2204

零倾覆力矩点(ZMP)

从形式上讲,ZMP 指的是空间中相对于一个平面(通常是地平面)抵消接触力矩的点的集合。这个集合实际上是一个轴,而不是一个点,但为了方便起见,让我们按照传统的推导方法来计算地面平面上的 ZMP。这一推导从任何多刚体系统的牛顿-欧拉运动方程开始:其中,为机器人的总质量,为重力矢量,为系统的重心,为加速度,为固定点的角动量变化率。在右侧,表示净接触扭矩,即施加到机器人上的所有接触扭矩之和,坐标取自质心 (COM)。

机器人控制与仿真应用 2372

[Android] 底部菜单布局+PopupWindows实现弹出菜单功能(初级篇)

这篇文章主要是自己研究如何对底部菜单进行布局,并简单的实现点击不同"按钮"实现图片切换和背景切换的功能,最后通过PopupWindows实现弹出菜单,点击不同按钮能实现不同方法,相当于美图秀秀编辑图片的功能吧!它并没有涉及到Fragment碎片切换页面的功能,因为页面始终显示被处理的图片.这是我初学Android的一篇基础性文章和在线思想笔记,网上有很多更优秀的demo,不过也希望对大家有所帮助,尤其是初学者~

杨秀璋的专栏 1万+

HQChart实战教程21 - uniapp app端K线图定制tooltip

HQChart实战教程21 - uniapp app端K线图定制tooltip序效果步骤2. 注册标题绘制事件3. 标题绘制回调函数格式说明eventdataobjtooltip显示函数完整代码HQChart代码地址 序 hqchartK线图内置一个tooltip, 如果需要定制一个tooltip, 我们可以通过注册绘制标题事件,来自己做一个div显示数据。 参考教程HQChart实战教程7-自定义显示手势点击K线显示信息 效果 步骤 在外部创建一个view,并在view里创建需要显示的信息字段. 例子里

小银 2561

用PopupWindow实现下拉列表,并再次熟悉一些其他基础知识点。

本文仅供菜鸟交流观看,大神请绕路。 这里首先要明确一下需求,并不单单是为了用一个PopupWindow来实现一个下拉列表 需求1:PopupWindow实现下来列表 需求2:点击选中列表中item中时,item中显示字体,再次点击字体隐藏。 需求3:所有选中的item,不论是什么顺序选择的,最后都按position(用的listview)的大小,从小到大排列然后显示在textvie

zhangcainiao007的博客 423

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

使用PopupWindow实现的自定义下拉列表

其中的SpinnerAdapter可以在上一篇博客”定义属于自己的适配器“中看到自定义属于自己的PopupWindowpublic class SpinnerPopWindow extends PopupWindow implements AdapterView.OnItemClickListener { private ListView mListView; private Cont

z_zhaojun的博客 2814

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

RecyclerView+PopupWindow实现下拉列表选择效果

已适配Android7.0 popuwindow全屏显示问题 实现主要代码:/** * Created by miao on 2017/9/29. * 自定义PopupWindow 实现下拉列表效果 */public abstract class SpinerPopWindow<T> extends PopupWindow{ private List<T> datas;

wangwo1991的博客 2919

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Android 使用PopupWindow实现下拉列表

来看效果图:在实现这个效果前,先来了解下PopupWindow的常用方法构造方法在实例化PopupWindow窗口时,需要我们自己传入窗口的界面视图和窗口的尺寸 实例化PopupWindow的方法常用以下几种public PopupWindow(View contentView) public PopupWindow(int width, int height) public PopupWindo

梦工厂 1万+

(简单好用)popupWindow+listView实现下拉列表的功能

有个需求:一有数据就显示列表提示,让用户选择是哪个数据。由于spinner定制性差,所以选择popupWindow+listView实现 package com.blzt.test; import android.app.Activity; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; imp...

xiyangyang8110的博客 1356

关于下拉列表的实现(spinner和PopupWindow+listview)

下拉菜单,个人感觉spinner使用起来不太好看,特别默认会显示第一行建议PopupWindow+listview来实现 1:用Spinner实现 spinner可以使用xml中数组最为资源或者使用代码控制 在values下新建arrays.xml c语言 java php

mengshirui_的博客 4789

自定义View,实现PopupWindow下拉列表

实现思路: 1.添加Butterknife的依赖,取消掉ActionBar,使用ToolBar代替 2.完成整体的布局,初始化控件,设置点击事件 3.初始化Popuwindow所要显示的数据 4.初始化Popuwindow控件的设置 5.Popuwindow与ListView相关联 6.三个Popuwindow所依附的LinearLayout,根据点击事件,做对应逻辑处理(改变textvie

lisiruxiaoniu的博客 699

告别Spinner下拉列表,用popupWindow 更美好

第一次发帖,主要是我今天为了实现一个好看点的下拉列表,在网上找了一天关于Spinner的资料,没有看到好的帖子。尝试了各种方法,始终找不到如何去设置下拉框的背景的方法,如果有请给我留言,谢谢。         最后在伟大的钟老师的建议下,我决定换个方向去考虑使用他说的PopupWindow,所以才找到一把写下拉列表的利剑,所以迫不及待的想把这个分享给那些和我一样迷失过小伙伴们。 该事例,实

jiansuichuang8172的博客 1590

Android 下拉列表之PopupWindow

版权声明:本文为博主原创文章,未经博主允许不得转载。 [html] view plain copy span style="font-size:18px;">package com.example.popupwindow;      import java.lang.reflect.Array;   import

阳光灿烂的日子的博客 728

使用popwindow实现自己的下拉列表

我们传统的下拉列表是spinner,但是spinner有时候实现不了我们想要的效果,可能需要自定义,但是自定义也会出现很多问题,这个问题变的非常的繁琐,为此需要用popwindow实现这个下拉列表,下面看demo运行效果图, 这个下拉列表实现范围非常广泛,为此特意做了一个demo哈,下面看我实现的思路,了解popwindow,其实就是一个控件点击之后弹出popwindow,然后在popwindo

u010859484的博客 1547

popupWindow使用详解

popupWindow说起来简单,但是使用略麻烦,今天带大家来看看怎么使用,先来看看效果图: 先来看看布局文件吧:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layou

江南一点雨的专栏 3062
上一篇: 选择日期,调用系统的时间弹窗DatePickerDialog
下一篇: ListView
EileenChing
博客等级 码龄12年 1粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值