我想用一个按钮来控制弹出窗口,当我点击按钮,弹出窗口显示,然后单击按钮,弹出窗口dimiss。 以下是我的代码:
@Override
public void onClick(View v) {
showPopupWindow();
}
/*** button control the PopupWindow ***/
private void showPopupWindow() {
View view = View.inflate(this, R.layout.popwindow_item, null);
popupwindow = new PopupWindow(view, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
if (popupwindow.isShowing()) {
popupwindow.dismiss();
}else {
popupwindow.setOutsideTouchable(true);
popupwindow.setBackgroundDrawable(new BitmapDrawable());
popupwindow.showAsDropDown(title);
}
viewOfPop(view);
}
结果是,当我点击按钮时,弹出窗口总是显示,并且不会失败。
我也尝试使用一个标志private boolean isShow = false;
,当我点击按钮时我将更改布尔值,但我不知道如何更改布尔值,当我点击时弹出窗口关闭popupwindow的外面。请帮助我,谢谢高级!
答案 0 :(得分:2)
我认为你总是创建一个新的弹出窗口,尝试添加一个检查。
private void showPopupWindow() {
if(popupwindow == null){
View view = View.inflate(this, R.layout.popwindow_item, null);
popupwindow = new PopupWindow(view, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
}
if (popupwindow.isShowing()) {
popupwindow.dismiss();
}else {
popupwindow.setOutsideTouchable(true);
popupwindow.setBackgroundDrawable(new BitmapDrawable());
popupwindow.showAsDropDown(title);
}
viewOfPop(view);
}
答案 1 :(得分:0)
mPopupWindow.setOutsideTouchable(true);
这使得您的PopupWindow会在其外部接收触摸事件包括您的按钮。
当ACTION_DOWN发生时,您的PopupWindow将被解雇。
当ACTION_UP发生时,单击了Button,所以转到showPopupWindow()
这就是为什么当你点击按钮时,你的PopupWindow会闪烁并永远显示。
答案 2 :(得分:0)
我添加using UnityEngine;
using System.Collections;
public class ClickToMove : MonoBehaviour
{
NavMeshAgent agent;
Animation _anim;
void Start()
{
agent = GetComponent<NavMeshAgent>();
_anim = GetComponent<Animation>();
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
_anim.Play("Walk");
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100))
{
agent.destination = hit.point;
}
}
}
}
,确定