Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中彈出菜單PopupWindow的使用

Android中彈出菜單PopupWindow的使用

編輯:關於Android編程

Android中,使用手指觸摸,不能像電腦一樣有鼠標左鍵和右鍵,所以會有一個PopupWindow來代替鼠標右鍵。當用戶點擊的時候出現一個彈出的窗口與用戶交流信息。好了,現在就開始介紹PopupWindow的用法。

首先聲明一個PopupWindow的對象

PopupWindow pop=null;

初始化pop

pop=new PopupWindow(v,ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);

第一個參數是要在PopupWindow中顯示的的View,第二個參數是PopupWindow的寬,我設置的是與其父窗口一樣寬,第三個參數是PopupWindow的高度,我設置的是包含它裡面的類容。

我們需要在PopupWindow中設置什麼樣的類容根據需要,我設置的是幾個Button,從xml文件中解析出來的

LayoutInflater l=LayoutInflater.from(this);

View v=l.inflate(R.layout.popup, null);

當用戶點擊按鈕的時候就讓PopupWindow顯示出來

@Override
public void onClick(View v) {
pop.showAsDropDown(button);

}

這時候PopupWindow就顯示在指定

showAsDropDown(View anchor)
anchor的左下方。

 

當我們不需要PopupWindow的時候調用

pop.dismiss();

 

另外PopupWindow顯示的時候可以用showAtLocation()方法

 

 

void android.widget.PopupWindow.showAtLocation(View parent, int gravity, int x, int y)
parent a parent view to get the android.view.View.getWindowToken() token fromgravity the gravity which controls the placement of the popup windowx the popup's x location offsety the popup's y location offset
第一個參數是要將PopupWindow放到的View,第二個參數是位置,第三第四是偏移值

 

pop.showAtLocation(WorkPopUpTestActivity.this.ll, Gravity.BOTTOM, 0, 0);

如果是這樣的話,就將PopupWindow放到了View的左下角。

 

最後注意:只有當View加載完成之後才能顯示PopupWindow,如果View沒有加載完成就加載的話會不成功。

判斷View是否加載完成可以判斷其寬度是否為為其0,若否,則加載完成。然後我們再加載PopupWindow。這裡可以用Handler來實現。

 

  1. @Override
  2. public void run() {
  3. // TODO Auto-generated method stub
  4. boolean b=true;
  5. while(b)
  6. {
  7. try {
  8. Thread.sleep(5);
  9. } catch (InterruptedException e) {
  10. // TODO Auto-generated catch block
  11. e.printStackTrace();
  12. }
  13. if(ll!=null)
  14. {
  15. if(ll.getWidth()!=0)
  16. {
  17. hand.sendEmptyMessage(0);
  18. b=false;
  19. }
  20. }
  21.  
  22.  
  23. }
  24.  
  25. } 如果加載完成就發送消息。在Handler的handleMessage中處理消息。代碼如下

     

     

    1. Handler hand=new Handler()
    2. {
    3.  
    4. @Override
    5. public void handleMessage(Message msg) {
    6. // TODO Auto-generated method stub
    7. super.handleMessage(msg);
    8. pop.showAtLocation(WorkPopUpTestActivity.this.ll, Gravity.BOTTOM, 0, 0);
    9.  
    10. }
    11.  
    12. }; 在handleMessage中顯示PopupWindow。

       

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