废话不多说,上关键代码,懒得上传截图,请见谅,直接上核心代码:
1.点击按钮监听启动dialog:
@Override
public void onClick(View view) {
showDialog();
}
public void onClick(View view) {
showDialog();
}
2.设置弹框显示属性
private void showDialog() {
ListView listView;
dialog = new Dialog(MainActivity.this);//写在主程序中,有需要自己更改
LayoutInflater layoutInflater = getLayoutInflater();
View view = layoutInflater.inflate(R.layout.popuwindow,null);
listView = (ListView) view.findViewById( R.id.lv);
listView.setOnItemClickListener(this);
madapter = new Madapter(getApplicationContext());
madapter.addlist();
listView.setAdapter(madapter);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);//在setContentView()前加入去标题设置
dialog.setContentView(view);
dialog.show();
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
WindowManager.LayoutParams p = dialog.getWindow().getAttributes(); // 获取对话框当前的参数值
p.width = WindowManager.LayoutParams.WRAP_CONTENT;
p.height = WindowManager.LayoutParams.WRAP_CONTENT;
// p.height = (int)(d.getHeight() * 0.8); // 高度设置为屏幕的0.6
// p.width = (int)(d.getWidth() * 0.65); // 宽度设置为屏幕的0.95
dialog.getWindow().setAttributes(p);
dialog.getWindow().setGravity( R.id.button);//设置具体位置//这里设置在右下方,具体原因,我也不知道
dialog.getWindow().setGravity(Gravity.CENTER);
dialog.setCanceledOnTouchOutside(true);//点击费弹出框位置取消
}
3.适配器设置
ListView listView;
dialog = new Dialog(MainActivity.this);//写在主程序中,有需要自己更改
LayoutInflater layoutInflater = getLayoutInflater();
View view = layoutInflater.inflate(R.layout.popuwindow,null);
listView = (ListView) view.findViewById( R.id.lv);
listView.setOnItemClickListener(this);
madapter = new Madapter(getApplicationContext());
madapter.addlist();
listView.setAdapter(madapter);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);//在setContentView()前加入去标题设置
dialog.setContentView(view);
dialog.show();
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
WindowManager.LayoutParams p = dialog.getWindow().getAttributes(); // 获取对话框当前的参数值
p.width = WindowManager.LayoutParams.WRAP_CONTENT;
p.height = WindowManager.LayoutParams.WRAP_CONTENT;
// p.height = (int)(d.getHeight() * 0.8); // 高度设置为屏幕的0.6
// p.width = (int)(d.getWidth() * 0.65); // 宽度设置为屏幕的0.95
dialog.getWindow().setAttributes(p);
dialog.getWindow().setGravity( R.id.button);//设置具体位置//这里设置在右下方,具体原因,我也不知道
dialog.getWindow().setGravity(Gravity.CENTER);
dialog.setCanceledOnTouchOutside(true);//点击费弹出框位置取消
}
public Madapter(Context applicationContext) {
this.context = applicationContext;
}
static class ViewHolder{
TextView text;
}//viewHolder这里设置listview_item其它属性
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null){
convertView = LayoutInflater.from(context).inflate(R.layout.lv_item,null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById( R.id.lv_text);
convertView.setTag(holder);
}{
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(list.get(position).toString());
holder.text.setTextColor(Color.BLACK);//设置显示文字颜色,不加这句代码,颜色是白色,具体原因我也不知道
holder.text.setGravity(Gravity.CENTER);
return convertView;
}
4.这里仅仅设置显示的文本,有更好的方法希望大家指出,不甚感激
this.context = applicationContext;
}
static class ViewHolder{
TextView text;
}//viewHolder这里设置listview_item其它属性
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null){
convertView = LayoutInflater.from(context).inflate(R.layout.lv_item,null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById( R.id.lv_text);
convertView.setTag(holder);
}{
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(list.get(position).toString());
holder.text.setTextColor(Color.BLACK);//设置显示文字颜色,不加这句代码,颜色是白色,具体原因我也不知道
holder.text.setGravity(Gravity.CENTER);
return convertView;
}
public void addlist() {
if (list==null){
list = new ArrayList();
String one = "1111";
String two = "2222";
String three = "3333";
list.add(one);
list.add(two);
list.add(three);
}
}
if (list==null){
list = new ArrayList();
String one = "1111";
String two = "2222";
String three = "3333";
list.add(one);
list.add(two);
list.add(three);
}
}