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

时间:2013-09-23 02:37:51

标签: android listview android-listview

当我点击ListView行中的3个点区域时,我想要弹出菜单。

enter image description here

registerForContextMenu无法满足我的需求,因为它发生在长按期间ListView行的任何区域。

我想知道。

  1. 如何在ListView行创建一个3点看UI?
  2. 如何安装PopupMenu,即使是Android 2.3?

3 个答案:

答案 0 :(得分:4)

  1. 您可以使用ImageView以3点显示图像。

  2. popupmenu有两种方式

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

    b)使用PopupWindow

  3. 这是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));
    

答案 1 :(得分:2)

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

以下是我的Adapter类的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;
}

答案 2 :(得分:0)

或者,当点击3个点时,您可以显示对话框。 PopupWindow需要找到屏幕上显示的位置。 显示一个对话框可以识别您选择的女巫。