每当按下GridView
中的项目时,我一直在寻找像Pinterest菜单这样的东西。我知道这个问题太广泛了。但是,对问题的小罢工将提供一种正确的方法来实现这些目标。
的阙: 的
如何在GridView项目上实现Contacts +或Pinterest Context菜单等自定义上下文菜单?
尝试:
ArcMenu:但它们取代了整个应用程序的滑块菜单或弹出菜单。 我想要为GridView项目创建onFly的菜单。
Satellite Menu:与ArcMenu相同,替换整体应用程序的滑块菜单或弹出菜单。
请赐教我实现这些行为。
答案 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。对于实现的深度,您可以浏览库的类。我不认为我可以把所有代码放在这里。
结果是这样的: