请有人帮忙-
我在名为 pop 的函数中创建了一个弹出窗口,该函数创建了一个弹出窗口。我还有另一个功能,当用户单击弹出窗口中的按钮时,它会关闭弹出窗口。我为解雇创建了一个单独的函数。我想将弹出窗口传递到解雇函数中 - 执行此操作的最佳方法是什么。我想重用解雇功能。
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void popup(View v) {
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = layoutInflater.inflate(R.layout.activity_alert_dialog,null);
final PopupWindow popup= new PopupWindow(layout, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
View vi=(View) findViewByID(R.id.Layout);
popup.showAtLocation(vi, 0, 20, -50);
}
public void dismiss(View v) {
popup.dismiss();
}
}
我的解雇方法是从资源布局文件中执行的:
<Button
android:text="cancel"
android:onClick="dismiss"/>
最佳答案
尝试如下代码:每次调用 popup()
时都会创建 Popup。
public class MainActivity extends AppCompatActivity {
private PopupWindow mPopup = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void popup(View v) {
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = layoutInflater.inflate(R.layout.activity_alert_dialog,null);
// Use global variable instead of local.
//final PopupWindow popup= new PopupWindow(layout, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
mPopup= new PopupWindow(layout, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
View vi=(View) findViewByID(R.id.Layout);
mPopup.showAtLocation(vi, 0, 20, -50);
}
public void dismiss(View v) {
if (mPopup != null && mPopup.isShowing()) {
mPopup.dismiss();
}
}
}
而且,我对 mPopup.showAtLocation(vi, 0, 20, -50);
的位置值有疑问。 y = -50
的位置是否正确?
我认为这个弹出窗口将显示在监视器之外。
关于java - 函数调用之外的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37805673/