弹出菜单展开/折叠从操作栏上的图标弹出、图标、栏上、菜单

2023-09-05 08:15:13 作者:别惹我我是男神

我正在开发的Andr​​oid 2.1 API 7的应用程序。我实现了我与操作栏 ActionbarSherlock 库。

I am developing Android 2.1 API 7 app. I implement my Action Bar with ActionbarSherlock library.

我的操作栏查看:

<?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>

在我的活动的onCreate()回调:

 @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 )。

我想实现的是,当用户手指preSS图像图标,弹出菜单将扩大在图标的下方,当preSS图标再次,弹出菜单折叠功能。如何实现这一点?

I would like to implement the feature that, when user finger press the image icon, a popup menu will expand below the icon, when press icon again, the popup menu collapses. How to implement this?

推荐答案

在您的ImageView onClickListener创建这个popupWindow,并把它在ImageView的

in your imageView onClickListener create this popupWindow and put it under the 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);
           }
     });

这将会把在你的ImageView /按钮,您popupWindow

this will place your popupWindow under your imageView/button