自定义上下文菜单,如pinterest菜单

时间:2014-05-18 04:01:15

标签: android android-gridview android-contextmenu

每当按下GridView中的项目时,我一直在寻找像Pinterest菜单这样的东西。我知道这个问题太广泛了。但是,对问题的小罢工将提供一种正确的方法来实现这些目标。

阙:

如何在GridView项目上实现Contacts +或Pinterest Context菜单等自定义上下文菜单?

Pinterest Context Menu Contacts+ Context Menu

尝试:

ArcMenu:但它们取代了整个应用程序的滑块菜单或弹出菜单。 我想要为GridView项目创建onFly的菜单。

Satellite Menu:与ArcMenu相同,替换整体应用程序的滑块菜单或弹出菜单。

请赐教我实现这些行为。

4 个答案:

答案 0 :(得分:1)

我认为您可以Context Menu代替PopupWindow代替您的要求。

 //Custom popup view
View view= layoutInflater.inflate(R.layout.popupview, null);  
PopupWindow popupWindow = new PopupWindow(
               view, 
               LayoutParams.WRAP_CONTENT,  
                     LayoutParams.WRAP_CONTENT);

//Display popup window on clicking anything
//Displays pop up window near button with offsets 10 and -10
popupWindow.showAsDropDown(button, 10, -10);

了解更多信息

http://developer.android.com/reference/android/widget/PopupWindow.html

http://android-er.blogspot.in/2012/03/example-of-using-popupwindow.html

答案 1 :(得分:0)

使用快速动作3D视图。这是在twitter应用程序中使用的菜单。
对于来源:https://github.com/lorensiuswlt/NewQuickAction3D

答案 2 :(得分:0)

我使用ArcMenu的修改版本(只是很小的,主要是视觉修改)来做类似的事情。并且它非常适合gridview(我在StaggeredGridView onitemclick中使用它)。

您只需要在gridview项目的xml中使用Visibility定义它:off然后在gridview适配器中或在活动中将其设置为在触摸或单击项目时可见...

不知道你为什么说整个应用程序,它也可以用作项目元素。

答案 3 :(得分:-1)

您可以查看我创建的这个库:

https://github.com/reyanshmishra/PinMenu

您可以克隆它并将其作为模块导入到您的应用中并执行以下操作:

在XML布局中:

<?xml version="1.0" encoding="utf-8"?>
<com.reyanshmishra.pinmenu.PinMenuHolder xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:pin_holder_draw_over_view="true"
    app:pin_holder_overlay_color="#90ffffff">



    <com.reyanshmishra.pinmenu.PinMenu
        android:id="@+id/one"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:elevation="5dp"
        android:padding="5dp"
        android:scaleType="centerInside"
        android:src="@drawable/ic_close_black_24dp"
        app:pin_background_color="@color/white"
        app:pin_name="Cancel"
        app:pin_selected_color="#BD081C" />



    <com.reyanshmishra.pinmenu.PinMenu
        android:id="@+id/three"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:elevation="5dp"
        android:padding="5dp"
        android:scaleType="centerInside"
        android:src="@drawable/share_variant"
        app:pin_background_color="@color/white"
        app:pin_name="Share"
        app:pin_selected_color="#BD081C" />


    <com.reyanshmishra.pinmenu.PinMenu
        android:id="@+id/four"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:elevation="5dp"
        android:padding="5dp"
        android:scaleType="centerInside"
        android:src="@drawable/dots_horizontal"
        app:pin_background_color="@color/white"
        app:pin_name="More"
        app:pin_selected_color="#BD081C" />


</com.reyanshmishra.pinmenu.PinMenuHolder>

现在用Java:

PinDialog mPinDialog = new PinDialog(this);
        mPinDialog.setContentView(R.layout.layout_pin_menu);
           mPinDialog.setPinSelectListener(new PinSelectListener() {
                    @Override
                    public void pinSelected(PinMenu pinMenu) {
                        Toast.makeText(mContext, "" + pinMenu.getPinName(), Toast.LENGTH_SHORT).show();
                    }
                });

        mPinDialog.addToRecyclerView(mRecyclerView);

它仍处于开发阶段,所以它只支持recyclerview。对于实现的深度,您可以浏览库的类。我不认为我可以把所有代码放在这里。

结果是这样的:

enter image description here