栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

防止Android活动对话框因外部触摸而关闭

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

防止Android活动对话框因外部触摸而关闭

这可以为您提供帮助。这是处理外部触摸事件的一种方式:

在窗口外触摸时如何取消以活动为主题的对话框?
只是想指出,有是一种方式来获得对话框般从主题作为一个对话的活动“触摸外面取消”的行为,虽然我还没有完全调查它是否有不必要的副作用。

在创建视图之前,在Activity的onCreate()方法中,将在窗口上设置两个标志:一个将其设置为“非模态”,以允许除活动视图之外的其他视图接收事件。第二种是接收到其中一个事件已发生的通知,这将向您发送ACTION_OUTSDIE移动事件。

如果将活动的主题设置为对话框主题,则将获得所需的行为。

看起来像这样:

public class MyActivity extends Activity { @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    // Make us non-modal, so that others can receive touch events.    getWindow().setFlags(LayoutParams.FLAG_NOT_TOUCH_MODAL, LayoutParams.FLAG_NOT_TOUCH_MODAL);    // ...but notify us that it happened.    getWindow().setFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);    // Note that flag changes must happen *before* the content view is set.    setContentView(R.layout.my_dialog_view);  }  @Override  public boolean onTouchEvent(MotionEvent event) {    // If we've received a touch notification that the user has touched    // outside the app, finish the activity.    if (MotionEvent.ACTION_OUTSIDE == event.getAction()) {      finish();      return true;    }    // Delegate everything else to Activity.    return super.onTouchEvent(event);  }}

我认为通过抓住事件而不采取任何措施,您可以防止比赛结束。但是,奇怪的是,活动对话框的默认行为是当您触摸外部时 关闭自身。

(PS:代码使用WindowManager.LayoutParams)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449453.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号