Android 《PopupWindow 仿微信下拉菜单》
布局文件
popup_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
android:background="#2f2f32"
>
<TextView
android:id="@+id/btn_pop_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:paddingRight="@dimen/dp_10"
android:paddingStart="@dimen/dp_10"
android:paddingTop="@dimen/dp_5"
android:paddingBottom="@dimen/dp_5"
android:drawableStart="@drawable/common_history"
android:drawablePadding="@dimen/dp_5"
android:text="查看历史"/>
<TextView
android:id="@+id/btn_pop_2"
android:layout_marginTop="@dimen/dp_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:paddingRight="@dimen/dp_10"
android:paddingStart="@dimen/dp_10"
android:paddingTop="@dimen/dp_5"
android:paddingBottom="@dimen/dp_5"
android:drawableStart="@drawable/common_delete"
android:drawablePadding="@dimen/dp_5"
android:text="清除暂存"/>
</LinearLayout>
Activity
MenuActivity.java
@Override
protected void initRightIcon() {
toolBarBuilder.setRightIconRes(R.drawable.common_righticon2);
toolBarBuilder.setRightIconVisibility(View.VISIBLE);
toolBarBuilder.setRightIconClick(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("xian","RightClick");
showPopup();
}
});
}
private void showPopup(){
if(popupWindow_view == null){
popupWindow_view = LayoutInflater.from(this).inflate(R.layout.popup_menu, null);
}
if(popupWindow == null){
popupWindow = new PopupWindow(popupWindow_view, ActionBar.LayoutParams.WRAP_CONTENT,ActionBar.LayoutParams.WRAP_CONTENT,true);
Log.i("xian", popupWindow_view.getWidth()+"");
//设置菜单显示位置
//兼容5.PopupWindow
popupWindow_view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.i("xian","popupWindow_view click");
// 必须写v.performClick();解决与单机事件冲突
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:
if(popupWindow != null && popupWindow.isShowing()){
popupWindow.dismiss();// 隐藏菜单
//popupWindow = null;
}
break;
case MotionEvent.ACTION_UP:
view.performClick();
break;
default:break;
}
return false;
}
});
TextView btn_pop_1 = popupWindow_view.findViewById(R.id.btn_pop_1);
btn_pop_1.getPaint().setFlags(Paint.ANTI_ALIAS_FLAG);
TextView btn_pop_2 = popupWindow_view.findViewById(R.id.btn_pop_2);
btn_pop_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("xian","btn_pop_1 click");
popupWindow.dismiss();
}
});
btn_pop_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("xian","btn_pop_2 click");
popupWindow.dismiss();
}
});
}
popupWindow.showAsDropDown(toolBarBuilder.getRightTv(),-20,toolBarBuilder.getToolbar().getHeight());
}
实现效果
本文来自博客园,作者:一个小笨蛋,转载请注明原文链接:https://www.cnblogs.com/paylove/p/18029598