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

LayoutInflater中施用的注意点以及PopupWindow的使用

2012-08-24 
LayoutInflater中使用的注意点以及PopupWindow的使用LayoutInflater:?mLayout (LinearLayout)LayoutInfl

LayoutInflater中使用的注意点以及PopupWindow的使用

LayoutInflater:

?

mLayout = (LinearLayout)LayoutInflater.from(context).inflate(resLayoutId, null); 

?

--->其中resLayoutId为布局文体的id,注意必须是layout级别的 ?:?R.layout.名称

?

?

PopupWindow的使用:

?

? ? ?PopupWindow是阻塞对话框,只有在外部线程 或者 PopupWindow本身做退出操作才行。PopupWindow完全依赖Layout做外观,在常见的开发中,PopupWindow应该会与AlertDialog常混用。

?

public class MenuActivity extends Activity {private static final String TAG = "MenuActivity";MenuPopupWindow menu1;View lt;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        lt = findViewById(R.id.ll_root);        menu1 = new MenuPopupWindow(this, R.layout.menu);    }@Overridepublic boolean onCreateOptionsMenu(Menu menu) {menu.add(1,100,1,"menu");Log.e(TAG, "======onCreateOptionsMenu=======");return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onMenuOpened(int featureId, Menu menu) {Log.e(TAG, "======onMenuOpened=======");/*if(menu1!= null){if(menu1.isShowing()){menu1.dismiss();}else{*///menu1.showAtLocation(lt, Gravity.BOTTOM, 0, 0);//}//}return super.onMenuOpened(featureId, menu);}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {Log.e(TAG, "======onPrepareOptionsMenu=======");menu1.showAtLocation(lt, Gravity.BOTTOM, 0, 0);return false;//super.onPrepareOptionsMenu(menu);}class MenuPopupWindow extends PopupWindow{LinearLayout mLayout;public MenuPopupWindow(Context context, int resLayoutId) {super(context);mLayout = (LinearLayout)LayoutInflater.from(context).inflate(resLayoutId, null); this.setContentView(mLayout);this.setWidth(LayoutParams.FILL_PARENT);this.setHeight(LayoutParams.WRAP_CONTENT);this.setFocusable(true);/// 设置 popupWindow 的背景为透明色}}

?注意这里在,onPrepareOptionsMenu这个方法中return的值是false,执行menu的顺序是:

?

? ?onPrepareOptionsMenu-----true---->onMenuOpened----true---->drawmenu

?

热点排行