package com.partynetwork.myview.mytoast; import com.partynetwork.dataprovider.util.DisplayUtil; import com.partynetwork.iparty.R; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.TextView; public class MenuBottomPop extends PopupWindow { private static final int TEXTSIXE = 20; private static final int PADDINGLEFT = 0; private static final int PADDINGTOP = 7; private static final int PADDINGRIGHT = 0; private static final int PADDINGBOTTOM = 7; private static final int MARGINLEFT = 20; private static final int MARGINTOP = 0; private static final int MARGINRIGHT = 20; private static final int MARGINBOTTOM = 5; private TextView cancelBtn; private LinearLayout moreLl;; private View mMenuView; private Context context; /** * * @param context * @param str * 弹出的选项字符串数组 * @param clickListener * 返回的监听 */ public MenuBottomPop(Context context, String[] str, OnClickListener clickListener) { super(context); this.context = context; mMenuView=View.inflate(context, R.layout.menu_bottom_pop, null); cancelBtn = (TextView) mMenuView.findViewById(R.id.cancel_tv); moreLl = (LinearLayout) mMenuView.findViewById(R.id.more_ll); // 取消按钮 cancelBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 销毁弹出框 dismiss(); } }); for (int i = 0; i < str.length; i++) { LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); lp.setMargins(dp2px(MARGINLEFT), dp2px(MARGINTOP), dp2px(MARGINRIGHT), dp2px(MARGINBOTTOM)); TextView tv = new TextView(context); tv.setLayoutParams(lp); tv.setBackgroundResource(R.drawable.menu_bottom_pop_more); tv.setPadding(dp2px(PADDINGLEFT), dp2px(PADDINGTOP), dp2px(PADDINGRIGHT), dp2px(PADDINGBOTTOM)); tv.setTextColor(tv.getResources().getColorStateList( R.drawable.menu_bottom_pop_cancel_color)); tv.setTextSize(TEXTSIXE); tv.setGravity(Gravity.CENTER); tv.setText(str[i]); tv.setTag(str[i]); tv.setOnClickListener(clickListener); moreLl.addView(tv); } // 设置SelectPicPopupWindow的View this.setContentView(mMenuView); // 设置SelectPicPopupWindow弹出窗体的宽 this.setWidth(LayoutParams.WRAP_CONTENT); // 设置SelectPicPopupWindow弹出窗体的高 this.setHeight(LayoutParams.WRAP_CONTENT); // 设置SelectPicPopupWindow弹出窗体可点击 this.setFocusable(true); // 设置SelectPicPopupWindow弹出窗体动画效果 this.setAnimationStyle(R.style.AnimBottom); // 实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0x00000000); // 设置SelectPicPopupWindow弹出窗体的背景 this.setBackgroundDrawable(dw); // mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框 // mMenuView.setOnTouchListener(new OnTouchListener() { // // public boolean onTouch(View v, MotionEvent event) { // // int height = mMenuView.findViewById(R.id.pop_ll).getTop(); // int y = (int) event.getY(); // if (event.getAction() == MotionEvent.ACTION_UP) { // if (y < height) { // dismiss(); // } // } // return true; // } // }); } public void showAtLocation(View parent) { super.showAtLocation(parent, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); } private int dp2px(int dp) { return DisplayUtil.dip2px(context, dp); } }