自定义单选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);
}
}