首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

PopupWindow自适应格局

2012-06-26 
PopupWindow自适应布局? ?Android自带的Menu菜单,常常无法满足我们的需求,所以就只有自己写menu菜单,通常

PopupWindow自适应布局

? ?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,则其他部份是可以点击的,也就是说传递事件时,不会先走PopupWindowmPopwindow = 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);

热点排行