我在ListView中打开了一个OnItemClickListener,打开一个弹出窗口。 但是,当我点击列表中的另一个项目时 - 另一个弹出窗口打开,我不知道如何获取已打开的窗口,以便我可以关闭它。 任何帮助将非常感谢!
这是我打开弹出窗口的代码:
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
LayoutInflater layoutInflater
= (LayoutInflater)getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView =layoutInflater.inflate(R.layout.popup,null);
Object checkExistence = parent.getItemAtPosition(position);
int imgID = ctx.getResources().getIdentifier(checkExistence.toString().toLowerCase().replace(" ","_"), "drawable", ctx.getPackageName());
ImageView imageView = (ImageView) popupView.findViewById(R.id.img1);
imageView.setImageResource(imgID);
final PopupWindow popupWindow = new PopupWindow(
popupView,
Toolbar.LayoutParams.WRAP_CONTENT,
Toolbar.LayoutParams.WRAP_CONTENT);
Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
btnDismiss.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
popupWindow.dismiss();
}});
popupWindow.showAsDropDown(list, 300, -1250);
}
});
答案 0 :(得分:0)
你可以试试这个,
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setOutsideTouchable(true);
或者
popupWindow.setFocusable(true);
答案 1 :(得分:0)
如注释中所述,您可以使用范围较大的变量来保留对弹出窗口的引用。然后,您可以使用dismiss()
关闭它。
// class member variable
PopupWindow popupWindow;
// ...
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// ...
popupWindow = new PopupWindow(popupView, Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT);
Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
btnDismiss.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// dismiss the popup window
popupWindow.dismiss();
}});
// ...
}
});