Autojs知道clickable为false时,知道控件信息如何实现定位单击操作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Autojs知道clickable为false时,知道控件信息如何实现定位单击操作?相关的知识,希望对你有一定的参考价值。

使用Autojs在安卓设备自动生成的单击代码id("back_iv").findOne().click() 运行后无效,然后查看控件信息,显示bounds(31,77,47,106) clickable为false , className 为android.widget.ImageView , depth为12 ,indexInParent为0,如何确定空间中心坐标实现控件定位单击?RT 求大神帮忙看看 这种控件的单击操作如何写。

当控制的可点击属性设置为false,它不可能执行一个点击操作控制使用单击()函数。然而,它仍然是能够模拟点击操作点击父控制目标的控制。要做到这一点,首先确定母公司控制通过检查它的属性,如边界(),id(),类名(),深度()和desc ()。如果家长控制点击属性设置为true,那么可以使用点击点击()函数。或者,如果它是不可能确定父控制或其可点击属性设置为false,那么可以使用范围()目标控制的属性来获取它的坐标和执行单击操作使用点击这些坐标(x, y)函数。 参考技术A 在Auto.js中,可以通过 bounds() 方法获取控件的位置信息,然后通过 click(x, y) 方法在指定的坐标位置进行单击操作。
如果 clickable 属性为 false,可以先获取该控件的位置信息,然后根据控件的位置信息和其它特征(如文本内容、ID等)计算出需要单击的坐标位置,最后调用 click(x, y) 方法实现单击操作。
例如,假设有一个控件,clickable 属性为 false,但是它的文本内容为 "Button",那么可以通过以下代码实现定位并单击该控件:
var btn = text("Button").findOne();
var bounds = btn.bounds();
var x = bounds.centerX();
var y = bounds.centerY();
click(x, y);
这段代码首先通过 text("Button").findOne() 方法获取文本内容为 "Button" 的控件,然后通过 bounds() 方法获取该控件的位置信息。最后,通过 bounds() 方法返回的坐标信息计算出控件中心的坐标,然后调用 click(x, y) 方法实现单击操作。
参考技术B 根据您提供的控件信息,可以发现该控件的clickable属性为false,因此无法直接使用click方法单击控件。您可以尝试使用press和moveTo方法来模拟手指按下和滑动的动作,实现对该控件的单击操作。代码示例如下:
var x = 39; // 控件中心 x 坐标
var y = 91; // 控件中心 y 坐标
press(x, y, 50); // 模拟按下操作
sleep(50); // 按下后等待一段时间
moveTo(x, y - 10, 50); // 模拟手指滑动
moveTo(x, y, 50); // 模拟手指返回原位置
sleep(50); // 等待一段时间
click(); // 单击操作
您可以将控件中心的坐标值替换为实际的坐标值,该代码模拟的是一个手指单击的过程,通过按下和滑动模拟了手指按下和松开的动作,最后调用click方法实现单击操作追问

通过AutoJs获取到的控件信息显示bounds(31,77,47,106) 控件中心x,y的值如何获得呢?

参考技术C 在控件的clickable属性为false时,可以使用控件的bounds属性来定位其位置,并通过点击坐标来实现单击操作。在您提供的信息中,bounds属性的值为(31,77,47,106),这代表了该控件在屏幕上的位置信息。具体来说,这个值表示该控件的左上角坐标为(31,77),右下角坐标为(47,106)。
因此,您可以通过计算出该控件的中心坐标,然后在该坐标处实现单击操作。示例代码如下:
scssCopy codelet widget = id("back_iv").findOne();
let bounds = widget.bounds();
let centerX = (bounds.left + bounds.right) / 2;
let centerY = (bounds.top + bounds.bottom) / 2;click(centerX, centerY);

上述代码中,首先获取到了控件对象,然后获取了该控件的bounds属性,并计算出了该控件的中心坐标(centerX, centerY)。最后,通过click方法在该坐标处实现了单击操作。

android SwitchButton 和CheckBox 怎样设置不可点击,Clickable无效

    在线程还在进行时设置按钮不可点击setClickable(false);

    getState()返回该线程的状态;

    isAlive()测试线程是否处于活动状态;

    view都是setClickable(false); 表示不可点击的;

    当然你还可以直接注册一个Touche事件,然后在onTouche里return true;

参考技术A view都是setClickable(false); 表示不可点击的
当然你还可以直接注册一个Touche事件
然后在onTouche里return true;即可本回答被提问者和网友采纳

以上是关于Autojs知道clickable为false时,知道控件信息如何实现定位单击操作?的主要内容,如果未能解决你的问题,请参考以下文章

Android-配置文件中设置“android:clickable="false"无效的原因及解决办法

带有 clickable = "false" 的 ImageButton 仍然可以点击

autojs 设置悬浮窗可触摸

autojs 设置悬浮窗可触摸

autojs 设置悬浮窗可触摸

如何让ListView的item不可点击