3

ListView当我连续单击 3 个点区域时,我想要弹出菜单。

在此处输入图像描述

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

我想知道。

  1. 如何ListView在行中创建一个 3 点外观的 UI?
  2. 如何拥有 PopupMenu,即使是 Android 2.3?
4

3 回答 3

4
  1. 您可以使用ImageView3 个点来显示图像。

  2. popupmenu有两种方式

    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));
于 2013-09-23T03:45:26.440 回答
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;
}
于 2014-01-26T16:12:16.367 回答
0

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

于 2013-09-23T03:51:21.853 回答