在Android中,点击加载动画外部以隐藏加载动画。

7

我正在使用一组项目和一个加载动画。如果您在其外部单击,则应该使其消失。有人知道如何做到这一点吗?

Spinner

我尝试过这个方法。它可以与EditText一起使用,但无法与Spinner一起使用。

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    View view = getCurrentFocus();
    boolean ret = super.dispatchTouchEvent(event);

    if (view instanceof EditText||view instanceof Spinner) {
        View w = getCurrentFocus();
        int scrcoords[] = new int[2];
        w.getLocationOnScreen(scrcoords);
        float x = event.getRawX() + w.getLeft() - scrcoords[0];
        float y = event.getRawY() + w.getTop() - scrcoords[1];

        if (event.getAction() == MotionEvent.ACTION_UP 
 && (x < w.getLeft() || x >= w.getRight() 
 || y < w.getTop() || y > w.getBottom()) ) { 
            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(), 0);
        }
    }
 return ret;
}

提前感谢您。

1
我已经检查了这个链接。但是它可能适用于对话框,而不是旋转器。 - Ram kiran Pachigolla
请查看以下链接:https://dev59.com/oGs05IYBdhLWcg3wJurp - Paresh Mayani
我找到的唯一丑陋的方法是http://stackoverflow.com/questions/7153835/customized-spinner-dialog-with-unwanted-space,阅读此问题并为您的微调器制作自定义非模型对话框,该对话框处理视图外部的触摸并解除该对话框。 - user370305
1
这不是默认行为吗?:\ 我几个小时前刚试过。 - st0le
1
@SerdarS,是的,将会有返回按钮,但是每次点击返回按钮并不是一个好的方法。我们应该通过提供这种类型的服务来简化应用程序,以方便最终用户使用。 - Ram kiran Pachigolla
显示剩余10条评论
2个回答

1
我个人所做的是创建一个自定义的AlertDialog,使用setSingleChoiceItems()来完成同样的事情。然后我使用了setCanceledOnTouchOutside()。

感谢你的回答。我在之前的应用程序中尝试了它,也成功了。但是这里我需要的是一个下拉列表。不是AlertDialog。如果你知道,请帮助我。 - Ram kiran Pachigolla
你可以直接捕获 SpinneronClick() 事件并运行一个 AlertDialog,我不觉得有什么难的。 - shkschneider

0

关于Dialog链接,有一个解决方案。

那么为什么不尝试创建一个自定义对话框(简单示例),使其看起来像一个旋转器?为您的对话框创建一个包含单选按钮的布局文件。

当用户点击单选按钮时,调用dialog.dismiss()并执行必要的代码。


谢谢您的回答。我已经在您提供的链接之前进行了检查。 - Ram kiran Pachigolla
重点在于将“Dialog”样式化为“Spinner”,而不是链接。尝试使用“Dialog”,使其类似于“Spinner”。 - Ilya Blokh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接