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

}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值