2025年2月13日 星期四 甲辰(龙)年 腊月十三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

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

时间:01-14来源:作者:点击数:24

自定义单选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);
  • }
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门