PopupWindow在Android.widget包下,项目中经常会使用到PopupWindow做菜单选项, PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。
效果图:
MainActivity.java
public class MainActivity extends Activityimplements OnClickListener { private PopupWindow mPopWindow; private View parentView; private Context context; ImageView mImageViewBar; @Override protected voidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); context = this; initView(); } private void initView() { // TODOAuto-generated method stub parentView =getLayoutInflater().inflate(R.layout.activity_main,null); mImageViewBar =(ImageView) findViewById(R.id.menu); mImageViewBar.setOnClickListener(this); showPopupWindow(); } private void showPopupWindow() { LayoutInflater inflater = (LayoutInflater)context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View contentView =inflater.inflate(R.layout.popuplayout,null); mPopWindow = newPopupWindow(contentView); mPopWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); mPopWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); mPopWindow = newPopupWindow(); // 设置SelectPicPopupWindow的View mPopWindow.setContentView(contentView); // 设置SelectPicPopupWindow弹出窗体的宽 mPopWindow.setWidth(LayoutParams.WRAP_CONTENT); // 设置SelectPicPopupWindow弹出窗体的高 mPopWindow.setHeight(LayoutParams.WRAP_CONTENT); // 设置SelectPicPopupWindow弹出窗体可点击 mPopWindow.setFocusable(true); mPopWindow.setOutsideTouchable(true); // 刷新状态 mPopWindow.update(); // 实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0000000000); // 点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener,设置其他控件变化等操作 mPopWindow.setBackgroundDrawable(dw); contentView.findViewById(R.id.memu1).setOnClickListener(this); contentView.findViewById(R.id.memu2).setOnClickListener(this); contentView.findViewById(R.id.memu3).setOnClickListener(this); } @Override public void onClick(View v) { int id =v.getId(); switch (id) { case R.id.menu: mPopWindow.showAsDropDown(mImageViewBar); break; case R.id.memu1: { Toast.makeText(context,"消息", Toast.LENGTH_SHORT).show(); mPopWindow.dismiss(); } break; case R.id.memu2: { Toast.makeText(context,"收藏", Toast.LENGTH_SHORT).show(); mPopWindow.dismiss(); } break; case R.id.memu3: { Toast.makeText(context,"首页", Toast.LENGTH_SHORT).show(); mPopWindow.dismiss(); } break; } } @Override protected void onDestroy() { // TODOAuto-generated method stub super.onDestroy(); mPopWindow.dismiss(); } }
activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#E4E4E4" android:minHeight="55dp"> <ImageView android:layout_width="20dp" android:layout_height="20dp" android:layout_centerVertical="true" android:layout_marginLeft="8dp" android:layout_marginRight="5dp" android:focusable="true" android:src="@drawable/abc_ic_ab_back_mtrl_am_alpha"/> <ImageView android:id="@+id/menu" android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="9dp" android:src="@drawable/top_arrow_message1"/> </RelativeLayout> </LinearLayout> popuplayout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical"> <LinearLayout android:layout_width="120dp" android:layout_height="130dp" android:layout_marginRight="2dp" android:background="@drawable/danchu" android:gravity="center_vertical" android:orientation="vertical"> <RelativeLayout android:id="@+id/memu1" android:layout_width="wrap_content" android:layout_height="30dp" android:layout_marginTop="5dp" android:gravity="center_vertical"> <ImageView android:id="@+id/xiaoxi" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginLeft="10dp" android:src="@drawable/android_arrow_application"/> <TextView android:id="@+id/pop_computer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/xiaoxi" android:text="消息" android:textColor="#FFFFFF"/> </RelativeLayout> <View android:layout_width="wrap_content" android:layout_height="1dp"/> <RelativeLayout android:id="@+id/memu2" android:layout_width="wrap_content" android:layout_height="30dp" android:layout_marginTop="5dp" android:gravity="center_vertical"> <ImageView android:id="@+id/shanchu" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginLeft="10dp" android:src="@drawable/android_arrow_profitbillsm"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/shanchu" android:text="收藏" android:textColor="#FFFFFF"/> </RelativeLayout> <View android:layout_width="wrap_content" android:layout_height="1dp"/> <RelativeLayout android:id="@+id/memu3" android:layout_width="wrap_content" android:layout_height="30dp" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" android:gravity="center_vertical"> <ImageView android:id="@+id/dianjifanhui" android:layout_width="18dp" android:layout_height="20dp" android:layout_marginLeft="10dp" android:src="@drawable/dir15"/> <TextView android:id="@+id/pop_manage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/dianjifanhui" android:text="首页" android:textColor="#FFFFFF"/> </RelativeLayout> <View android:layout_width="wrap_content" android:layout_height="1dp"/> </LinearLayout> </LinearLayout>
相关推荐
博客《 PopUpWindow使用详解(一)——基本使用》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/49272285
android中popupWindow使用案列。点击按钮,显示出菜单按钮。
Android PopupWindow使用示例,更多信息请访问http://blog.csdn.net/qingdujun/article/details/42609549
博客《PopUpWindow使用详解(二)——进阶及答疑》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/49278705
popupWindow使用的方法,以及PopupWindow样式的使用
PopupWindow 使用实例
这个demo主要介绍了,popupwindow的基本使用,实现了popupwindow和listView的结合希望可以帮助需要的同学
PopupWindow的简单使用!
主要为大家详细介绍了Android中PopupWindow使用方法,感兴趣的小伙伴们可以参考一下
PopupWindow精确计算要显示位置原理和方法;实现带箭头的上下文菜单遇到的坑;Android7.0 PopupWindow的兼容… 方案是为解决特定问题或达成特定目标而制定的一系列计划或步骤。它的作用是提供一种系统性的方法,以...
NULL 博文链接:https://hz-chenwenbiao-91.iteye.com/blog/2086352
popupwindow的简单使用,对提示框的显示位置做了详细描述,和用popupwindow做简单的下拉列表。
主要介绍了Android PopupWindow使用实例,本文直接给出代码实例,需要的朋友可以参考下
主要为大家详细介绍了Android组件popupwindow使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
popupwindow使用以及渐变背景
使用PopupWindow很简单,可以总结为三个步骤: 创建PopupWindow对象实例; 设置背景、注册事件监听器和添加动画; 显示PopupWindow。 其中,第二步是可选的(不过基本上都要进行第二步的设置)。下面是一个简单的...
使用popupWindow实现类似微信点击右上角加号弹出添加好友的列表,还有在底部弹出的popupWindow
(1)Popupwindow在显示之前一定要设置宽高,Dialog无此限制。 (2)Popupwindow默认不会响应物理键盘的back,除非显示设置了popup.setFocusable(true);而在点击back的时候,Dialog会消失。 (3)Popupwindow不会...
该项目演示了,PopupWindow的基本使用,相关PopupWindow代码有独立的Class文件,并且有大量的注释说明。实现的功能有弹出的PopupWindow上有EditText能与软键盘并存不冲突,弹出PopupWindow的时候背景自动改变灰度为...