ListPopupWindow 的简单实现

xiaoxiao2021-02-28  34

packag com.test; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.ListPopupWindow; import android.view.View; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.PopupWindow; import android.widget.Toast; public class ListPopupwindowActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_left_recyclerview); WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); final int width = wm.getDefaultDisplay().getWidth(); final int height = wm.getDefaultDisplay().getHeight(); findViewById(R.id.btn_show).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showWindow(width, height); } }); } /** * 显示window */ public void showWindow(int width, int height) { String items[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; ListPopupWindow listPopupWindow = new ListPopupWindow(this); // ListView适配器 listPopupWindow.setAdapter( new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, items)); // 选择item的监听事件 listPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int i, long id) { Toast.makeText(getApplicationContext(), "选择:" + i, Toast.LENGTH_SHORT).show(); // listPopupWindow.dismiss(); } }); //设置暗色 WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.alpha = 0.6f; getWindow().setAttributes(lp); //dimiss后 恢复亮色 listPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.alpha = 1.0f; getWindow().setAttributes(lp); } }); // 对话框的宽高 listPopupWindow.setWidth(width - dip2px(this, 32)); // listPopupWindow.setHeight(height);//不是太长可以不要设置高度 // ListPopupWindow的锚,弹出框的位置是相对当前View的位置 listPopupWindow.setAnchorView(findViewById(R.id.btn_show)); // ListPopupWindow 距锚view的距离 listPopupWindow.setHorizontalOffset(dip2px(this, 16)); listPopupWindow.setVerticalOffset(0); listPopupWindow.setModal(false); listPopupWindow.show(); } /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } }
转载请注明原文地址: https://www.6miu.com/read-39007.html

最新回复(0)