android点击事件禁用,android-禁用所有视图的触摸事件
android-禁用所有视图的触摸事件
禁用所有视图的触摸事件的最佳方法是什么?
非常感谢,
格拉齐
Gratzi asked 2020-07-27T19:09:52Z
13个解决方案
55 votes
这是用于禁用某个视图组的所有子视图的功能:
/**
* Enables/Disables all child views in a view group.
*
* @param viewGroup the view group
* @param enabled true
to enable, false
to disable
* the views.
*/
public static void enableDisableViewGroup(ViewGroup viewGroup, boolean enabled) {
int childCount = viewGroup.getChildCount();
for (int i = 0; i < childCount; i++) {
View view = viewGroup.getChildAt(i);
view.setEnabled(enabled);
if (view instanceof ViewGroup) {
enableDisableViewGroup((ViewGroup) view, enabled);
}
}
}
peceps answered 2020-07-27T19:10:20Z
16 votes
覆盖活动的false方法,如下所示:
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
return true;//consume
}
如果返回false,则所有触摸事件均被禁用。
返回false以使其正常工作
Ercan answered 2020-07-27T19:10:48Z
15 votes
您可以尝试:
your_view.setEnabled(false);
哪个应该禁用触摸事件。
或者,您可以尝试(感谢Ercan):
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
return true;//consume
}
要么
public boolean dispatchTouchEvent(MotionEvent ev) {
if(!onInterceptTouchEvent()){
for(View child : children){
if(child.dispatchTouchEvent(ev))
return true;
}
}
return super.dispatchTouchEvent(ev);
}
OWADVL answered 2020-07-27T19:11:21Z
11 votes
如果且仅当inProgress变量设置为false时,这段代码基本上会将此事件传播到父视图,从而允许触摸事件。
private boolean inProgress = false;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (!inProgress)
return super.dispatchTouchEvent(ev);
return true;
}
Bruno Horta answered 2020-07-27T19:11:41Z
5 votes
用这个。 返回true表示侦听器已经消耗了该事件,而android不需要执行任何操作。
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
Abhishek answered 2020-07-27T19:12:01Z
3 votes
如何在所有视图上覆盖透明视图并捕获所有触摸事件呢?
Yudi answered 2020-07-27T19:12:21Z
3 votes
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
Shaleen M answered 2020-07-27T19:12:37Z
2 votes
整个应用程序可能无法实现。 您将必须为每个视图覆盖onTouchEvent()并忽略用户输入。
rajath answered 2020-07-27T19:12:57Z
1 votes
我做了这种方法,对我来说非常合适。 它禁用选定视图的所有触摸事件。
public static void disableView(View v) {
v.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
if (v instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) v;
for (int i = 0; i < vg.getChildCount(); i++) {
View child = vg.getChildAt(i);
disableView(child);
}
}
}
jan hruska answered 2020-07-27T19:13:17Z
0 votes
根据您的评论:
我只想能够在某个时候禁用当前活动的视图
您似乎想禁用当前活动的所有触摸,而不管触摸的视图如何。
在适当的时间从覆盖Activity.dispatchTouchEvent(MotionEvent)返回true将消耗触摸并有效地完成此操作。 此方法是touch方法调用链中的第一个。
SK9 answered 2020-07-27T19:13:50Z
0 votes
一种更简单的方法是通过布局(.xml)文件禁用它:只需添加
android:shouldDisableView="True"
对于要禁用的视图的触摸事件。
BhanuSingh answered 2020-07-27T19:14:14Z
0 votes
在科特林:
fun View.setEnabledRecursively(enabled: Boolean) {
isEnabled = enabled
if (this is ViewGroup)
(0 until childCount).map(::getChildAt).forEach { it.setEnabledRecursively(enabled) }
}
// usage
import setEnabledRecursively
myView.setEnabledRecursively(false)
yanchenko answered 2020-07-27T19:14:34Z
0 votes
最简单的方法是
private fun enableDisableActivty(isEnable : Boolean){
if(!isEnable) window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE)
else window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE)
}
Shivam Dawar answered 2020-07-27T19:14:58Z
android点击事件禁用,android-禁用所有视图的触摸事件相关推荐
- android 点击图标重启,Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题的解决方法...
Android应用第一次安装成功点击"打开"后Home键切出应用后再点击桌面图标返回导致应用重启问题的解决方法 if((getIntent().getFlags() & I ...
- Android点击无响应,Android Studio无响应打不开的解决办法
最近谷歌发布了Android Studio,下载安装之后,在使用时发现一个问题,那就是发布无响应且无法启动,也就是点击Android图标的时候没有任务反应,我想说的是你需要重新配置一下环境~ 因为这个 ...
- android 点击文本框,android 文本框部分文字的点击事件
转载请标明出处. android文本框部分文字点击事件. String text1 = "这是个例子"; String text2 = "点击的文字"; Spa ...
- android 点击跳过,android开发里跳过的坑——button不响应点击事件
昨天遇到一个头疼的问题,在手机上按钮事件都很正常,但是在平板上(横屏显示的状态),button点击事件不响应,代码简化如下: public class Test extends Activity im ...
- android 点击空白退出,Android 点击空白处隐藏键盘
方法一:使用android的分发机制(代码稍微有点多) /** * 实现点击空白处,软键盘消失事件 * @param ev * @return */ @Override public boolean ...
- android点击出现菜单,Android 点击按钮弹出菜单
效果图: 1.创建menu文件夹,新建main.xml文件 android:id="@+id/add" android:title="添加" /> and ...
- android点击选择相册,android: 从相册中选择照片
虽然调用摄像头拍照既方便又快捷,但并不是每一次我们都需要去当场拍一张照片的. 因为每个人的手机相册里应该都会存有许许多多张照片,直接从相册里选取一张现有的照 片会比打开相机拍一张照片更加常用.一个优秀 ...
- android 点击返回顶部,Android scrollToTop实现点击回到顶部(兼容PullTorefreshScrollview)...
前言 最近因为项目组需求,特研究了一下"回到顶部"效果,即:页面里有scrollview,内容很多,当滑动到页面下面或者更深时,需要回到顶部,即可点击出现的按钮,省得回滑N久.我没 ...
- android点击展开全文,Android显示全文折叠控件使用方法详解
一般列表里文字太多的一个折叠效果的空间,效果图如下. 当文字超过设定的行数后就折叠,小于设定行数不显示展开按钮.下面上代码. 先看布局文件: android:layout_width="wr ...
最新文章
- 10个迷惑新手的Cocoa,Objective-C开发难点和问题
- linux gcc 与 glibc 的关系 glibc版本查看
- 别顾着学习工作,没了生活
- XCode上传成功后,商店里构建版本显示正在处理中
- TensorFlow学习笔记(十八)tf.reshape矩阵变形
- python声音信号调制_用python产生正弦波和PWM信号产生脉冲幅度调制
- 备份数据 宝塔linux_宝塔面板旧版本升级教程汇总—升级宝塔面板
- P2055-假期的宿舍【网络流,最大流,最大匹配】
- source 1.5 中不支持 diamond 运算符
- 经典算法题每日演练——第十八题 外排序
- 分享:架构师软技能之协商
- 解决python安装包无法正常安装问题
- 微信小程序从入门到放弃(五)
- PhpQuery PHP操作HTML类,PHP操作XML类,PHP操作Dom类
- linux 传真 邮件,基于Linux的传真系统(转)
- java 合并两个音频_如何利用音乐合成软件将多段音频合并为一段?快速合并音频的方法...
- UE TurnInPlace 转身动画的解决方案和常见问题
- HDU 5713 状压dp
- 解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。
- python头像转卡通_Python实现将照片变成卡通图片的方法【基于opencv】
热门文章
- Java加视频特效,实现伪原创
- 获取JTextPane光标的位置
- PLSQL登录时,“ORA-12514:监听程序当前无法识别连接描述符中请求的服务” 错误解决
- 威纶通触摸屏与仪表通讯_西门子S7-200PLC与威纶通HMI的通信案例
- css设置input框长度_干货极致分享浅谈CSS属性,有趣的盒模型。网友:哎呦不错哦!...
- UOS系统下FFmpeg源码编译安装及注意事项
- Android判断网线连接
- 为什么IEE754标准中,32位浮点数的指数转换为阶码时需要加上数值为127的偏移量?
- 防摇控制matlab,一种起重机防摇控制方法与流程
- cfree运行程序错误的原因_ARM Cortex-M 系列 MCU错误代码自动追踪库的使用分享