底部弹出popUpWindow

来源:互联网 发布:mysql 韩顺平 百度云 编辑:程序博客网 时间:2024/04/30 23:41

点击外部消失,重写内部的onclick事件

代码部分

  • PopupWindowUtils.java

    import android.content.Context;import android.graphics.drawable.ColorDrawable;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.WindowManager;import android.widget.ListView;import android.widget.PopupWindow;/** * Created by jiaqi.wang on 2016/7/7 0007. * 底部弹出popupwindow */public class PopupWindowUtils {    private MyPopAdapter myPopAdapter;    private PopupWindow window;    public static PopupWindowUtils instance = new PopupWindowUtils();    private PopupWindowUtils() {    }    public static PopupWindowUtils getInstance() {        return instance;    }    public boolean isShowing() {        if (window != null) {            return window.isShowing();        }        return false;    }    public void show(View mPopwinParent) {        if (window != null) {            window.showAtLocation(mPopwinParent, Gravity.BOTTOM, 10, 10);        }    }    public void dismiss() {        if (window != null) {            window.dismiss();        }    }    public void setContentView(View inflate) {        if (window == null) {            window = new PopupWindow(inflate, -1, -2);            window.setFocusable(true);            //设置外部可点击            window.setOutsideTouchable(true);            // 设置透明蒙层            window.setBackgroundDrawable(new ColorDrawable(0xb0000000));            //盖住自带软键盘            window.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);            window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);        }        window.setContentView(inflate);    }    public void initPopWinData(Context context, String[] list, View.OnClickListener clickListener) {        View inflate = LayoutInflater.from(context).inflate(R.layout.pop_choose, null);        final View dismiss = inflate.findViewById(R.id.dimiss_view);        dismiss.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                PopupWindowUtils.getInstance().dismiss();            }        });        ListView popList = (ListView) inflate.findViewById(R.id.lv_pop);        myPopAdapter = new MyPopAdapter(context, list);        myPopAdapter.setClickListener(clickListener);        popList.setAdapter(myPopAdapter);        PopupWindowUtils.getInstance().setContentView(inflate);    }}
  • MyPopAdapter.java

    import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import static android.view.View.OnClickListener;/** * Created by jiaqi.wang on 2016/7/7 0007. * 底部弹出popupwindow适配器 */public class MyPopAdapter extends BaseAdapter {    private String[] list;    private Context context;    private OnClickListener clickListener = new OnClickListener() {        @Override        public void onClick(View v) {        }    } ;    public MyPopAdapter(Context context, String[] list) {        this.list = list;        this.context = context;    }    public void setClickListener(OnClickListener clickListener){        this.clickListener = clickListener;    }    @Override    public int getCount() {        return list.length;    }    @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return 0;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder = null;        if (convertView == null) {            convertView = LayoutInflater.from(context).inflate(R.layout.pop_choose_item, null);            holder = new ViewHolder();            holder.tv = (TextView) convertView.findViewById(R.id.tv_pop);            convertView.setTag(holder);        } else {            holder = (ViewHolder) convertView.getTag();        }        holder.tv.setText(list[position]);        holder.tv.setOnClickListener(clickListener);        return convertView;    }    class ViewHolder {        TextView tv;    }}

xml文件

  • pop_choose.xml

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <View        android:id="@+id/dimiss_view"        android:layout_width="match_parent"        android:layout_height="0dp"        android:background="#0fff"        android:layout_weight="1"/>    <TextView        android:layout_width="match_parent"        android:layout_height="34dp"        android:background="@color/white"        android:gravity="center"        android:text="请选择"        android:textColor="@color/color_blue_009eef"        android:textSize="16dp" />    <ListView        android:id="@+id/lv_pop"        android:background="@color/white"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:divider="@null"        android:scrollbars="none"/></LinearLayout>
  • pop_choose_item.xml

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <TextView        android:id="@+id/tv_pop"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:padding="10dp"        android:layout_marginTop="18dp"        android:gravity="center"        android:text="选择"        android:textSize="15dp" /></LinearLayout>
0 0
原创粉丝点击