android material design:popupmenu
android material design 引入的popupmenu类似过去的上下文菜单,但是更灵活。 如图所示:
现在给出实现上图popupmenu的代码。 本例是一个普通的button触发弹出popupmenu。
测试的mainactivity.java :
package zhangphil.materialdesign;
import android.app.activity;
import android.os.bundle;
import android.support.v.widget.popupmenu;
import android.view.menuitem;
import android.view.view;
import android.widget.button;
import android.widget.toast;
public class mainactivity extends activity {
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
final button button = (button) findviewbyid(r.id.button);
button.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view v) {
showpopupmenu(button);
}
});
}
private void showpopupmenu(view view) {
// view当前popupmenu显示的相对view的位置
popupmenu popupmenu = new popupmenu(this, view);
// menu布局
popupmenu.getmenuinflater().inflate(r.menu.main, popupmenu.getmenu());
// menu的item点击事件
popupmenu.setonmenuitemclicklistener(new popupmenu.onmenuitemclicklistener() {
@override
public boolean onmenuitemclick(menuitem item) {
toast.maketext(getapplicationcontext(), item.gettitle(), toast.length_short).show();
return false;
}
});
// popupmenu关闭事件
popupmenu.setondismisslistener(new popupmenu.ondismisslistener() {
@override
public void ondismiss(popupmenu menu) {
toast.maketext(getapplicationcontext(), "关闭popupmenu", toast.length_short).show();
}
});
popupmenu.show();
}
}
package zhangphil.materialdesign;
import android.app.activity;
import android.os.bundle;
import android.support.v7.widget.popupmenu;
import android.view.menuitem;
import android.view.view;
import android.widget.button;
import android.widget.toast;
public class mainactivity extends activity {
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
final button button = (button) findviewbyid(r.id.button);
button.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view v) {
showpopupmenu(button);
}
});
}
private void showpopupmenu(view view) {
// view当前popupmenu显示的相对view的位置
popupmenu popupmenu = new popupmenu(this, view);
// menu布局
popupmenu.getmenuinflater().inflate(r.menu.main, popupmenu.getmenu());
// menu的item点击事件
popupmenu.setonmenuitemclicklistener(new popupmenu.onmenuitemclicklistener() {
@override
public boolean onmenuitemclick(menuitem item) {
toast.maketext(getapplicationcontext(), item.gettitle(), toast.length_short).show();
return false;
}
});
// popupmenu关闭事件
popupmenu.setondismisslistener(new popupmenu.ondismisslistener() {
@override
public void ondismiss(popupmenu menu) {
toast.maketext(getapplicationcontext(), "关闭popupmenu", toast.length_short).show();
}
});
popupmenu.show();
}
}
mainactivity.java需要的activity_main布局文件只含一个普通的android button,在次不再赘述。
位于menu目录下的main.xml:
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" >
android:id="@+id/action_open"
android:orderincategory="
android:title="打开"
app:showasaction="never"/>
android:id="@+id/action_new"
android:orderincategory="
android:title="新建"
app:showasaction="never"/>
android:id="@+id/action_del"
android:orderincategory="
android:title="删除"
app:showasaction="never"/>
以上内容给大家分享基于android实现点击某个按钮让菜单选项从按钮周围指定位置弹出的相关知识,希望大家喜欢。