android PopupWindow例子(代碼片段)
指定VIEW的onClick事件:
private PopupWindow popup_message;// 留言對話框
/**
* 全局Click事件
*/
@Override
public void onClick(View v) {
if (v == btnMessage) {// 留言
getPopupWindowByMessage();
popup_message.showAtLocation(findViewById(R.id.layout_main), Gravity.CENTER | Gravity.CENTER, 0, 0);
}
}
/**
* 獲取PopupWindow實例
*
* @author SHANHY
*/
private void getPopupWindowByMessage() {
if (null != popup_message) {
popup_message.dismiss();
return;
} else {
initPopupWindowByMessage();
}
}
/**
* 創建PopupWindow(留言)
*
* @author SHANHY
*/
protected void initPopupWindowByMessage() {
View popupWindow_view = getLayoutInflater().inflate(R.layout.popupwindow_message, null, false); // 獲取自定義布局文件popup.xml的視圖
popup_message = new PopupWindow(popupWindow_view, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, true);// 創建PopupWindow實例
Button btnSure = (Button) popupWindow_view.findViewById(R.id.btn_sure);// dialog.xml視圖裏麵的控件
Button btnCancel = (Button) popupWindow_view.findViewById(R.id.btn_cancel);// dialog.xml視圖裏麵的控件
// popup.setBackgroundDrawable(getResources().getDrawable(R.drawable.panel_bg));
popup_message.setBackgroundDrawable(new BitmapDrawable()); // 響應返回鍵必須的語句。請放心,設置 BackgroundDrawable 並不會改變你在配置文件中設置的背景顏色或圖像。
popup_message.setFocusable(true);// menu菜單獲得焦點 如果沒有獲得焦點menu菜單中的控件事件無法響應
popup_message.update();
// 返回鍵關閉
popupWindow_view.findViewById(R.id.layout_main).setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK)
if (popup_message != null && popup_message.isShowing())
popup_message.dismiss();
return false;
}
});
btnSure.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {// 留言
}
});
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (popup_message != null && popup_message.isShowing())
popup_message.dismiss();
}
});
}
最後更新:2017-04-03 14:54:04