2012-02-14 16 views
4

Android 2.1 API 7アプリを開発しています。私はActionbarSherlockライブラリで私のアクションバーを実装します。ポップアップメニューアクションバーのアイコンから展開/折りたたむ

私のアクションバービュー:私の活動onCreate()コールバックで

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

     <ImageView 
      android:id="@+id/my_option" 
      android:layout_gravity="left" 
      android:src="@drawable/ic_launcher" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
     /> 
</LinearLayout> 

@Override 
    protected void onCreate(Bundle arg0) { 
    super.onCreate(arg0); 

     ActionBar actionBar = getSupportActionBar(); 
     View actionBarView = getLayoutInflater().inflate(R.layout.action_bar, null); 

     actionBar.setCustomView(actionBarView); 

     ImageView actionBarImg = (ImageView) actionBarView.findViewById(R.id.my_option); 
     actionBarImg.setOnClickListener(new OnClickListener(){ 

       public void onClick(View view) { 
        //how to pop up a menu which is expand/collapse below the image icon       
       } 
     }); 
    } 

あなたは上記を参照したように、アクションバーのレイアウト上の画像アイコン(actionBarImg)があります。

画像のアイコンを押したときにポップアップメニューがアイコンの下に広がり、アイコンをもう一度押すとポップアップメニューが崩れるという機能を実装したいと思います。これを実装する方法は?

答えて

2

追加変数:

private PopupWindow mPopupMenu; 
private View mMenuLayout; 
private boolean isPopupOpened = false; 

のonCreate()に追加:このpopupWindowを作成onClickListenerあなたImageViewの中

mMenuLayout = getLayoutInflater().inflate(R.layout.menu_layout, null); 
mPopupMenu = new PopupWindow(mMenuLayout, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); 

actionBarImg.setOnClickListener(new OnClickListener() { 

    public void onClick(View view) { 
     if (isPopupOpened) 
     { 
      mPopupMenu.dismiss(); 
      isPopupOpened = false; 
     } 
     else 
     { 
      mPopupMenu.showAsDropDown(actionBarImg); 
      isPopupOpened = true; 
     }       
    } 

}); 
+0

mPopupMenu.showAsDropDown(tv);ここのテレビは何ですか – darsh

+0

ああ、私の間違いは、 'actionBarImg' – candyleung

2

をし、この配置しますImageViewの下

 actionBarImg.setOnClickListener(new OnClickListener() { 

      public void onClick(View view) { 
       LayoutInflater inflater = getLayoutInflater(); 
       View layout = inflater.inflate(R.layout.cart_layout, null); 

       PopupWindow pw = new PopupWindow(layout , LinearLayout.LayoutParams.WRAP_CONTENT, 
         LinearLayout.LayoutParams.WRAP_CONTENT, true); 
       // display the popup in the center 
       pw.setOutsideTouchable(true); 
       pw.setBackgroundDrawable(new ColorDrawable(android.R.color.transparent)); 
       pw.setFocusable(true); 
       pw.setTouchInterceptor(new OnTouchListener() { 
        @Override 
        public boolean onTouch(View v, MotionEvent event) { 
         Log.i("touch ", "touch"); 
         if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { 
          Log.i("touch outside", "touch outside"); 
          pw.dismiss(); 
          return true; 
         } 
         return false; 
        } 
       }); 
       pw.showAsDropDown(v); 
      } 
    }); 

をそれを置きますポップアップウィンドウ画像の下に表示/ボタン

関連する問題