Android自带的Menu菜单,常常无法满足我们的需求,所以就只有自己写menu菜单,通常的选择是用PopupWindow来实现自定义的menu菜单,先看代码,再来说明要注意的几点:
View menuView = inflater.inflate(R.layout.menu_popwindow, null);
final PopupWindow p = new PopupWindow(mContext);
p.setContentView(menuView);
p.setWidth(ViewGroup.LayoutParams.FILL_PARENT);
p.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
p.setAnimationStyle(R.style.MenuWindow);
p.setOnDismissListener(this);
p.setOutsideTouchable(false);
p.setBackgroundDrawable(new ColorDrawable(android.R.color.transparent));
p.setFocusable(true); // 如果把焦点设置为false,则其他部份是可以点击的,也就是说传递事件时,不会先走PopupWindow
mPopwindow = p;
来说明其中的几点:
1. 为了让PopupWindow自适应屏幕的宽度,设置宽度时用ViewGroup.LayoutParams.FILL_PARENT,为了自适应子布局的高度,设置高度时用ViewGroup.LayoutParams.WRAP_CONTENT
2. 由于PopupWindow类没有继承ViewGroup类,所以inflater.inflate(int resource, ViewGroup root)方法的第二个参数只能传为null,传null会使最外层布局的android:layout_xxx都不起作用。所以高度是以第二层布局为主
3. 为了设置背景和边距,其背景只能设置在第二层布局里,因第一层布局的android:layout_marginXxx不起作用,而设置android:padding_Xxx不会影响背景。
4. menu有一个特点,就是点外部,menu菜单要消失,要实现这个,有几个属性要一起设置:p.setOutsideTouchable(false);p.setBackgroundDrawable();p.setFocusable(true);
分享到:
相关推荐
Android评论PopupWindow弹出窗,可根据输入法自适应高度,点击输入框时,输入法弹出和隐藏,对于我们的评论窗口而言,高度始终都是保持不变,这样可以给用户带来更好的体验! 具体实现代码地址:...
炫酷的底部弹窗(popupwindow) 布局缩放效果
实现类似QQ风格的popupwindow弹出窗效果,出现时有遮挡图层,消失时无遮挡图层.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
类似微信和往来的用户二维码名片显示后,分享二维码,保存二维码页面的布局显示
PopupWindow 例子 只适应大小 位置PopupWindow android
PopupWindow
Android弹窗实现之Popupwindow及DialogFragment。创建并实现PopupWindow布局 实现PopupWindow对象实例 设置PopupWindow背景、动画属性、控件实现及事件监听 显示PopupWindow及位置设定。
实现的功能有弹出的PopupWindow上有EditText能与软键盘并存不冲突,弹出PopupWindow的时候背景自动改变灰度为半透明黑色,消失后背景灰度复原,PopupWindow还能根据自己的实际需求制定自己想要的弹出动画,以及...
popupwindow下拉布局为:listView、Gridview、二级菜单listview。将其写成Util类,只要将数据源和在哪个控件弹出的对象传入就可以直接引用并且设置item的点击事件。
通过java android开发,实现popupWindow方式的图片展示功能,方便大家运用。
android popupwindow 底部灰色背景
解决PopupWindow嵌套PopupWindow报的异常Unable to add window
经过多番测试实践,实现了popupwindow 弹出在指定控件的下方。代码上有注释,有需要注意的地方。popupwindow 有自已的布局,里面控件的监听实现都有。
自定义popupWindow修改版
PopupWindow之显示顶层对话框代码
仿微信popupwindow.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。