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