您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

自定义单选popupwindow显示在控件(edittext)上方

时间:01-14来源:作者:点击数:
CDSY,CDSY.XYZ

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

}
}
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门