我正在使用android中的recyclerView处理gridLayout。我在每个网格项目中都有一个选项,我想要显示另一个类的弹出活动。请看图片 -
每个项目都有一个菜单选项。我的弹出活动java名称是 CustomPop.Class 。我使用recyclerView显示gridViews,其holder方法就像
public void onBindViewHolder(ViewHolder holder, int position) {
holder.img_chatroom_menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), ChatroomPopup.class);
view.getContext().startActivity(intent);
}
});
}
通过这个我可以显示弹出活动。但问题是它出现在活动的中间,但我希望它在菜单选项旁边打开。
答案 0 :(得分:2)
as per my above comment 您可以使用 Popup Menu
如果空格可用,则Android弹出菜单会在锚文本下方显示菜单,否则会在锚文本上方显示。如果在弹出菜单外单击,它就会消失。
尝试此创建菜单文件
file:poupup_menu.xml
<menu xmlns:androclass="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/one"
android:title="One"/>
<item
android:id="@+id/two"
android:title="Two"/>
<item
android:id="@+id/three"
android:title="Three"/>
</menu>
比使用像这样的创建弹出菜单
holder.img_chatroom_menu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Creating the instance of PopupMenu
PopupMenu popup = new PopupMenu(MainActivity.this, button1);
//Inflating the Popup using xml file
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(MainActivity.this,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show();
return true;
}
});
popup.show();//showing popup menu
}
});//closing the setOnClickListener method
此处示例演示链接 how to create pop-up menu in android
答案 1 :(得分:1)
您必须使用弹出菜单来实现您想要的效果,如下所示:
创建菜单用户res > menu > your_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_item_one"
android:title="Item One" />
<item
android:id="@+id/menu_item_two"
android:title="Item Two" />
</menu>
将上述代码放入style.xml
<style name="popupMenuStyle" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:textColor">@color/colorBlack</item>
<item name="android:itemBackground">@color/colorWhite</item>
<!--<item name="android:popupBackground">@android:color/white</item>-->
</style>
在各自的RecyclerView Adapter
holder.myAlbumsOptionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context wrapper = new ContextThemeWrapper(context, R.style.popupMenuStyle);
final PopupMenu popup = new PopupMenu(wrapper, v, Gravity.END);
popup.inflate(R.menu.your_menu);
popup.show();
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_one:
//Do operation if menu_item_one
break;
case R.id.menu_item_two:
//Do operation if menu_item_two
break;
}
return false;
}
});
}
});
了解有关PopupMenu
的更多信息