Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> popupwindow 捕獲不到 setTouchInterceptor(轉)

popupwindow 捕獲不到 setTouchInterceptor(轉)

編輯:高級開發

Popupwindow的使用方法概要如下:

  PopupWindow window;

  VIEw v = this.getLayoutInflater().inflate(R.layout.popupwindow, null);

  window = new PopupWindow(v, 200, 300);

  window.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);

  window.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);

  設置長寬並非必須,但是不設置可能會導致圖片顯示尺寸不合適。

  window.setOutsideTouchable(true);

  不設置此項則下面的捕獲window外touch事件就無法觸發。

  Drawable win_bg = this.getResources().getDrawable(R.drawable.bg);

  window.setBackgroundDrawable(win_bg);

  這個很WS,即使在XML裡設置了background也認為是沒有背景,必須在這裡指定背景,如果不指定同樣無法觸發下面的Touch監聽事件。

  window.setTouchInterceptor(new OnTouchListener() {

  @Override

  public boolean onTouch(VIEw v, MotionEvent event) {

  if (event.getAction() == MotionEvent.ACTION_OUTSIDE)

  window.dismiss();

  return false;

  }

  });

  在onCreate裡設置好這些後,在某個button的onClick裡調用window.showAsDropDown(v);即可(v是onClick函數的參數)

  如果CustomPopupWindow繼承了PopupWindow,而QuickAction繼承了CustomPopupWindow的話,在QuickAction裡不要用setContentVIEw,不然可能圖片會變得很大,比實際尺寸還大,目前原因未明。

  QuickAction的XML文件,最外層的要用LinearLayout,不能用RelativeLayout,不然圖片會很大,原因未明。

  用LinearLayout時會出現上面的元素覆蓋下面的,比如上面一個listview下面一個button,listvIEw的元素多到覆蓋屏幕時就會覆蓋掉button,可以把LinearLayout改成RealtiveLayout即可。

  轉自:http://hi.baidu.com/jacky_Java/blog/item/37f5915453ff479f8c543023.Html

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved