Android 在ListView中实现以下弹出菜单的想法

Android 在ListView中实现以下弹出菜单的想法,android,listview,android-listview,Android,Listview,Android Listview,当我点击列表视图行中的3点区域时,我想要弹出菜单 无法满足我的需要,因为在长按过程中,ListView行的任何区域都会发生这种情况 我想知道 如何在ListView行中创建一个3点外观的用户界面 即使对于Android 2.3,如何拥有弹出菜单 您可以使用ImageView显示带有3个点的图像 弹出菜单有两种方式 a) 使用一些布局并使其可见/消失 b) 使用PopupWindow 下面是PopupWindow的示例代码 PopupWindow popupWindow = new PopupW

当我点击
列表视图
行中的3点区域时,我想要弹出菜单

无法满足我的需要,因为在长按过程中,
ListView
行的任何区域都会发生这种情况

我想知道

  • 如何在
    ListView
    行中创建一个3点外观的用户界面
  • 即使对于Android 2.3,如何拥有弹出菜单
  • 您可以使用
    ImageView
    显示带有3个点的图像

  • 弹出菜单有两种方式

    a) 使用一些布局并使其可见/消失

    b) 使用
    PopupWindow

  • 下面是PopupWindow的示例代码

    PopupWindow popupWindow = new PopupWindow(context);
    
    View popUpView = View.inflate(activity, linearlayout, null);
    popUpView.setBackgroundColor(Color.TRANSPARENT);
    mpopup.setContentView(popUpView);
    mpopup.setHeight(LayoutParams.WRAP_CONTENT);
    mpopup.setWidth(LayoutParams.WRAP_CONTENT);
    mpopup.setFocusable(true);
    mpopup.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.transperent));
    mpopup.setOutsideTouchable(true);
    mpopup.setAnimationStyle(R.anim.slide_out_up);
    mpopup.showAtLocation(popUpView, Gravity.TOP, activity.getResources()
                .getInteger(R.integer.log_out_popup_x), activity.getResources()
                .getInteger(R.integer.log_out_popup_y));
    

    也可以在单击3个点时显示对话框。 PopupWindow需要找到在屏幕上显示的位置。
    显示一个对话框可以识别您选择的巫婆克隆。

    我知道有点晚了,您可能已经找到了解决方案,但我刚刚遇到了您的问题,这是我的解决方案

    下面是适配器类的getView方法的代码

    @Override
    public View getView(int p, View convertView, ViewGroup parent)
    {
        final ViewHolder holder;
    
        if (convertView == null)
        {
            holder = new ViewHolder();
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.d_item, null);
    
            holder.dHeading = (TextView) convertView.findViewById(R.id.txt);
            holder.ds = (TextView) convertView.findViewById(R.id.txt1);
            holder.options = (ImageView)convertView.findViewById(R.id.dPopupMenu);
            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }
    
        holder.dHeading.setText(DList.get(p).getDHeading());
        holder.ds.setText(DList.get(p).getDs());
    
        holder.options.setOnClickListener( new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                final PopupMenu popmenu = new PopupMenu(context, holder.options);
                popmenu.getMenuInflater().inflate(R.menu.dua_popup_menu, popmenu.getMenu());
    
                popmenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener()
                {
                    public boolean onMenuItemClick(MenuItem item)
                    {
                        Toast.makeText(context, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
                        return true;
                    }
                });
    
                popmenu.show();
             }
         });
    
        return convertView;
    }
    

    如何设置浮动菜单的位置,使其刚好显示在3点以下?如何用fadein动画如play google来显示它?@MustafaGüven你可以通过
    view.getLocationOnScreen()
    找到视图的位置(3个点),然后将layoutparams设置为弹出窗口。这里的mpopup和linearlayout是什么?我们如何减少弹出菜单的宽度和高度,菜单项太大了。@Abdul Rahman