自定义单选popupwindow显示在控件(edittext)上方
- public class OrderPopupWindow extends PopupWindow {
-
- private Context mContext;
- private View mView;
- private LinearLayout mLinearLayout;
- public OnClickItemListener mOnClickItemListener;
- int mTextSize = 14;
- int mTextPadding = 20;
- int mItemHeight = 110;
- int mDrawable = 255;
-
-
- public OrderPopupWindow(Context context) {
- super(context);
- mContext = context;
- mView = LayoutInflater.from(context).inflate(R.layout.activity_order_flow_pop, null);
- // 设置可以获得焦点
- setFocusable(true);
- // 设置弹窗内可点击
- setTouchable(true);
- // 设置弹窗外可点击
- setOutsideTouchable(true);
-
- setContentView(mView);
- mLinearLayout = (LinearLayout) mView.findViewById(R.id.ll_of_pop);
- setBackgroundDrawable(new ColorDrawable(mDrawable)); //new ColorDrawable(0)即为透明背景
-
-
- }
-
- public interface OnClickItemListener {
- void Check(View v, View view);
- }
-
-
- public OrderPopupWindow setOnClickDialogListener(OnClickItemListener onClickItemListener) {
- this.mOnClickItemListener = onClickItemListener;
- return this;
- }
-
- public void showPopupWindow(List<String> data, final View view) {
- mLinearLayout.removeAllViews();
- for (String text : data) {
- final TextView textView = new TextView(mContext);
- textView.setText(text);
- textView.setTextSize(mTextSize);
- textView.setPadding(mTextPadding, mTextPadding, 0, mTextPadding);
- mLinearLayout.addView(textView);
- textView.invalidate();
- textView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mOnClickItemListener.Check(v, view);
- dismiss();
- }
- });
- }
- showUp(view, mLinearLayout.getChildCount());
- }
-
- private void showUp(View view, int number) {
- int[] location = new int[2];
- view.getLocationOnScreen(location);
- int width = view.getWidth();
- setWidth(width);
- setHeight(number * mItemHeight);
- //在控件上方显示
- showAtLocation(view, Gravity.NO_GRAVITY, (location[0] + view.getWidth() / 2) - width / 2, location[1] - number * mItemHeight);
-
- }
- }
-