- 浏览: 1321152 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (132)
- android Launcher (15)
- 收藏夹 (3)
- UI设计 (28)
- J2EE (2)
- android网络编程 (8)
- 项目经理是熬出来的 (8)
- Android图像处理 (5)
- 系统层开发 (12)
- 数据库 (2)
- 程序员是熬出来的 (2)
- Android技巧 (11)
- 地图相关 (2)
- Android底层 (9)
- Android疑难杂症 (4)
- 开发工具 (4)
- 知识梳理 (8)
- 源码阅读 (7)
- Media媒体库 (5)
- 调试技术 (3)
- Android蓝牙 (3)
- 动画特效 (5)
- jni (3)
- 串口通信 (1)
- Android优化 (3)
- 架构设计 (1)
- Android Test (1)
- 翻译系列 (0)
最新评论
-
我说123木头人雪雪:
...
Android截屏并对图片做高斯模糊处理 -
ysc123shift:
没有源码。
Android截屏并对图片做高斯模糊处理 -
我de专属doll:
你那个Jni库是自己编译的还是有现成的呢?
Android media媒体库分析之:分类别统计媒体文件大小 -
zhunanfengfeimeng:
想做项目经理?这些工具必须了解 -
ls0609:
一个带人脸识别的智能照相机demohttp://blog.cs ...
Android 调用相机,获取的图片太小
之前我实现了在listview中显示图片和checkbox,具体看这儿:http://gqdy365.iteye.com/blog/992340
接下来我将上述listview添加到popupwindow窗口中。关于这个listview我就再不多说了,主要是实现popupwindow和美化popupwindow。
先看看我做截图:
1、创建一个popupwindow,并设置相应的样式。
注意:popupwindow的showAtLocation()方法的第一个参数是popupwindow显示的父窗口,可以通过:findViewById()获取当前布局。将该view作为参数传递给popupwindow。
给按钮添加监听事件:
在layout中新建popupwindow.xml文件,具体内容如下,主要是对window的布局:
其中listView的布局的布局和实现请参考文章开头提到的另一篇文章。
新建rounded_corners_pop.xml,用于自定义窗口的样式文件,具体内容如下:
这个就可以实现圆角的样式,周围的白边是通过在白的样式上面叠加黑色的来实现的。
其他样式文件大家可以参考上面的rounded_corners_pop.xml自己写。
2、在main.xml中添加按钮,一个用于显示window,一个用于隐藏window
在activity中初始化这两个按钮,并添加监听事件:
你试试这样可以吗?
恩,是的,但我第一次做的时候很多事实想不到的,呵呵,所以我觉得也有和我一样遇到此类问题的,分享给这些人!大侠们见笑了!
接下来我将上述listview添加到popupwindow窗口中。关于这个listview我就再不多说了,主要是实现popupwindow和美化popupwindow。
先看看我做截图:
1、创建一个popupwindow,并设置相应的样式。
private void popAwindow(View parent) { if (window == null) { LayoutInflater lay = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = lay.inflate(R.layout.popupwindow, null); v.setBackgroundDrawable(getResources().getDrawable(R.drawable.rounded_corners_view)); //初始化按钮 submit = (Button) v.findViewById(R.id.submit); submit.setOnClickListener(submitListener); cancel = (Button) v.findViewById(R.id.cancel); cancel.setOnClickListener(cancelListener); //初始化listview,加载数据。 list=(ListView)v.findViewById(R.id.lv); MyAdapter adapter=new MyAdapter(Main.this); list.setAdapter(adapter); list.setItemsCanFocus(false); list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); list.setOnItemClickListener(listClickListener); window = new PopupWindow(v, 500,260); } //设置整个popupwindow的样式。 window.setBackgroundDrawable(getResources().getDrawable(R.drawable.rounded_corners_pop)); //使窗口里面的空间显示其相应的效果,比较点击button时背景颜色改变。 //如果为false点击相关的空间表面上没有反应,但事件是可以监听到的。 //listview的话就没有了作用。 window.setFocusable(true);//如果不设置setFocusable为true,popupwindow里面是获取不到焦点的,那么如果popupwindow里面有输入框等的话就无法输入。 window.update(); window.showAtLocation(parent, Gravity.CENTER_VERTICAL, 0, 0); } OnItemClickListener listClickListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ViewHolder vHollder = (ViewHolder) view.getTag(); // 在每次获取点击的item时将对于的checkbox状态改变,同时修改map的值。 vHollder.cBox.toggle(); MyAdapter.isSelected.put(position, vHollder.cBox.isChecked()); } };
注意:popupwindow的showAtLocation()方法的第一个参数是popupwindow显示的父窗口,可以通过:findViewById()获取当前布局。将该view作为参数传递给popupwindow。
给按钮添加监听事件:
OnClickListener submitListener = new OnClickListener() { @Override public void onClick(View v) { //这儿可以写提交数据的代码。 closeWindow(); } }; OnClickListener cancelListener=new OnClickListener(){ @Override public void onClick(View v){ closeWindow(); } }; private void closeWindow(){ //将每个checkbox的标记改为false,以便下次弹出window时是初始的状态。 for (int j = 0; j < MyAdapter.isSelected.size(); j++) { MyAdapter.isSelected.put(j, false); ViewHolder vHollder = (ViewHolder) list.getChildAt(j).getTag(); vHollder.cBox.setChecked(false); } //提交数据时关闭popupwindow。 if (window != null) { window.dismiss(); } }
在layout中新建popupwindow.xml文件,具体内容如下,主要是对window的布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/tip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textSize="18dip" android:background="@drawable/rounded_corners_list" android:text="这是一个popupWindow的例子"/> <!-- 如果layout_width的值为fill_parent时,居中要用android:gravity="center"--> <ListView android:id="@+id/lv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/rounded_corners_list"/> <LinearLayout android:orientation="horizontal" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/rounded_corners_list"> <Button android:id="@+id/submit" android:layout_width="100dip" android:layout_height="50dip" android:text="提交"/> <Button android:id="@+id/cancel" android:layout_width="100dip" android:layout_height="50dip" android:text="取消"/> </LinearLayout> </LinearLayout>
其中listView的布局的布局和实现请参考文章开头提到的另一篇文章。
新建rounded_corners_pop.xml,用于自定义窗口的样式文件,具体内容如下:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ffffffff" /> <stroke android:width="3dp" color="#ffff8080" /> <corners android:radius="10dp" /> <padding android:left="3dp" android:top="3dp" android:right="3dp" android:bottom="3dp" /> </shape>
这个就可以实现圆角的样式,周围的白边是通过在白的样式上面叠加黑色的来实现的。
其他样式文件大家可以参考上面的rounded_corners_pop.xml自己写。
2、在main.xml中添加按钮,一个用于显示window,一个用于隐藏window
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/lmain" > <Button android:id="@+id/myButton1" android:layout_width="100dip" android:layout_height="50dip" android:text="显示"/> <Button android:id="@+id/myButton2" android:layout_width="100dip" android:layout_height="50dip" android:text="隐藏"/> </LinearLayout>
在activity中初始化这两个按钮,并添加监听事件:
OnClickListener bPop = new OnClickListener() { @Override public void onClick(View v) { popAwindow(v); } }; OnClickListener boff = new OnClickListener() { @Override public void onClick(View v) { if(window!=null){ window.dismiss(); } } };
评论
5 楼
珠帘闭幕西山雨
2015-05-15
代码都不全
4 楼
gqdy365
2011-07-01
ericslegend 写道
支持楼主,下来先看看这几部分分别是怎么实现的
你试试这样可以吗?
LayoutInflater lay = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = lay.inflate(R.layout.dialog_window_layout, null); final PopupWindow p = new PopupWindow(v,LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); p.setBackgroundDrawable(new ColorDrawable(0)); TextView name=(TextView)v.findViewById(R.id.dialog_name);
3 楼
hoozh
2011-07-01
ggdy你好,我是android和java的初学者,我继承了PopupWindow,想把类似 listClickListener 这些接口放在继承的子类里面,这样程序主Actibity代码比较少,看起来清爽一点,但是我发现在PopupWindow的子类里没法使用findViewById函数,不知有什么办法没有?
2 楼
gqdy365
2011-04-14
heji 写道
不错,谢谢分享。其实有这么一句话就行了new PopupWindow(v, 500,260); 其他的都很easy~~~支持楼主!共勉
恩,是的,但我第一次做的时候很多事实想不到的,呵呵,所以我觉得也有和我一样遇到此类问题的,分享给这些人!大侠们见笑了!
1 楼
heji
2011-04-12
不错,谢谢分享。其实有这么一句话就行了new PopupWindow(v, 500,260); 其他的都很easy~~~支持楼主!共勉
发表评论
-
Android多Activity通用Title
2015-05-20 10:12 6828先看一下效果图: 要实现在每个页面显示相同的Title, ... -
Android textview实现局部点击
2015-04-20 18:18 4650先看效果图: 实现代码,很简单的: private ... -
Android中单击空白区域隐藏键盘
2015-03-06 11:29 4748项目开发中,产品经理拿着iPhone上的效果说Android! ... -
Android ViewPager切换的N种动画
2014-09-10 17:55 49887基于上一篇《Android ViewP ... -
Android ViewPager使用技巧
2014-09-10 17:23 10753最近项目中用到ViewPage,因此对这个3.1之后新增的接口 ... -
知识梳理:Android子线程中更新UI的3种方法
2014-09-03 16:09 76464在Android项目中经常有碰到这样的问题,在子线程中完成耗时 ... -
Android ListView 滚动的N种方法
2014-07-25 16:07 8375Android 里面让ListView滚动有N种方法,这儿列举 ... -
(转载)关于分辨率,还是没搞清楚
2014-07-22 15:41 8701.drawable-(hdpi,mdpi,ldpi)的区别 ... -
Android多分辨率支持
2014-01-10 11:45 0Android官方给出的解决方案: http://develo ... -
Android播放动画后点击事件消失
2012-11-09 10:36 7254问题:为imageview添加了动画,动画播放完之后image ... -
为Android应用程序添加两个入口
2012-10-29 09:43 1742项目中有这样一个需求: 安装一个APK之后,生成两个图标,点击 ... -
Android 获取屏幕尺寸
2012-06-28 10:28 1905项目需要在service中获取屏幕分辨率,即手机的尺寸,网上搜 ... -
Android dialog 全屏
2012-02-11 17:08 19277Android中让Dialog全屏: 一、在style中定义样 ... -
android 让Activity透明起来
2011-08-26 21:55 3481让自己的Activity变成透明的:关键是设置Activity ... -
android图片缩放(指定大小)
2011-07-15 10:58 19263private Drawable zoomDrawabl ... -
用ScrollView和TableLayout实现类似于Gallery的效果
2014-07-15 09:45 3632想实现左右拖动ImageView或TextView的效果,于是 ... -
android自定义ViewGroup总结
2014-07-15 09:45 6902在稍微复杂一些的布局中就要自己定义一个ViewGroup,里面 ... -
android 屏幕密度和资源的关系
2014-07-15 09:46 1318一、概念介绍: 1、density值表示每英寸有多少个显示点, ... -
android通知小结
2011-06-17 10:22 3109有时候要让我们发的通知不被用户清除,这就需要将通知加入正在运行 ... -
android小部件(widget)小结
2011-06-17 10:21 7339一、为widget添加点击事件 在继承自AppWidgetPr ...
相关推荐
### 实现在Android的PopupWindow中显示ListView #### 一、简介 在Android开发过程中,PopupWindow是一种非常实用的UI组件,它可以用来展示临时性的信息或者菜单等。本篇文档主要介绍如何在PopupWindow中集成一个...
在 Android 中实现_popupwindow_显示_listview_ 在 Android 开发中,PopupWindow 是一个常用的组件,用于显示临时信息或提供用户交互。然而,在 PopupWindow 中显示 ListView 可能会遇到一些问题。本文将介绍如何在...
至此,我们已经实现了在PopupWindow中显示自适应的ListView。但为了提升用户体验,可能还需要对ListView进行一些优化,比如添加头尾视图、设置分割线、监听条目点击事件等。此外,考虑到性能问题,ListView通常会...
本示例将详细介绍如何在PopupWindow上显示一个ListView,并实现与之相关的交互功能,模仿QQ登录界面,虽然仍有待改进,但基本功能已经实现。 首先,让我们了解PopupWindow的基本概念。PopupWindow是Android提供的一...
在Android开发中,有时我们需要创建一个可自定义的弹出菜单,这通常通过使用`PopupWindow`类来实现。`PopupWindow`是Android系统提供的一个轻量级窗口,它可以显示在屏幕上的任意位置,用于创建浮动、弹出式的UI组件...
在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来实现各种形式的弹出窗口,如下拉菜单、提示框等。本教程将详细讲解如何使用`PopupWindow`来创建一个以`ListView`形式展示的菜单。首先,我们需要...
在Android开发中,`ListView`是一种常用的组件,用于展示大量数据列表。而`PopupWindow`则是用来实现临时显示一个小窗口的工具,常用于快速操作或者下拉菜单等场景。本篇将详细介绍如何在用户点击`ListView`时弹出一...
通过以上步骤,我们就成功地在PopupWindow中实现了ListView的自适应显示。这个过程涉及了PopupWindow、ListView、Adapter和布局测量等多个关键点,理解并熟练掌握这些知识点对于Android开发中的交互设计至关重要。
在这个布局中,我们还需要为ListView指定一个适配器,适配器负责将数据转化为ListView中的项。常见的适配器有ArrayAdapter、BaseAdapter等,这里我们可以根据实际需求选择合适的适配器实现。 创建好ListView布局后...
通过以上步骤,我们可以实现一个具有单选功能的`PopupWindow`,并在`ListView`中展示数据。这样的设计在许多场景下都非常有用,如下拉菜单、选项选择等。在实际开发中,可以根据需求对这个示例进行扩展和优化,例如...
在Android开发中,PopupWindow是一个非常实用的组件,它能够创建一个浮动的窗口,通常用于在主界面之上显示一些临时性的信息或者交互操作。在这个场景中,我们将探讨如何在PopupWindow中使用ListView来展示数据,并...
AndroidListView+PopupWindow实现item点击弹出PopupWindow 博客地址:https://blog.csdn.net/dreams_deng/article/details/104618270
至此,我们已经实现了`PopupWindow`嵌套`ListView`的功能,同时也解决了`ListView`的宽度自适应问题,并介绍了如何在Android Studio中创建9.png图片。这个示例对于理解和应用`PopupWindow`与`ListView`的结合有着...
在Android开发中,`PopupWindow`和`ListView`是两种常用组件,它们结合使用可以创建出丰富的交互式界面。`PopupWindow`是一个可以显示在任意位置的浮动窗口,而`ListView`则是一种可滚动的视图,用于展示大量数据。...
`PopupWindow`是Android中的一个类,它允许开发者创建可弹出的窗口,这种窗口可以在屏幕上的任意位置显示,并且可以设置背景透明或者不透明,适合用来创建各种临时的、浮动的UI元素。在我们的场景中,`PopupWindow`...
在实际应用中,PopupWindow常常与AdapterView(如ListView、RecyclerView)结合使用,当用户点击某一项时弹出。还可以通过调整PopupWindow的背景颜色和透明度,使其看起来像一个悬浮的对话框。 综上所述,...
PopupWindow和ListView是Android开发中常用的两种组件,它们在实现丰富的用户交互时起着关键作用。本篇文章将深入探讨如何将PopupWindow与ListView结合使用,让ListView的item在顶部与底部之间实现动态跳跃效果。 ...
在Android开发中,`PopupWindow` 和 `ListView` 是两种常用组件,它们分别用于实现弹出窗口和可滚动列表的功能。结合使用时,可以创建出交互性更强的UI设计,如下拉菜单、浮层选择器等。让我们深入探讨如何在Android...
在Android应用开发中,PopupWindow是一个非常实用的组件,它能提供一种轻量级的对话框效果,可以在屏幕上的任意位置弹出,并且可以自定义其内容和样式。本示例将详细介绍如何实现一个位于右上角、类似QQ设置功能的...
在Android开发中,有时我们需要创建具有特定样式和功能的组件,比如自定义的下拉框。本篇将详细讲解如何使用PopupWindow实现一个定制化的下拉框。 首先,理解PopupWindow的基本概念。PopupWindow是Android提供的一...