AutoJs6
AutoJs6 copied to clipboard
悬浮窗中弹出菜单(PopupMenu.show())不显示
如题: 想在点击一个悬浮窗中的按钮时弹出菜单.
实现代码:
const EditorInfo = android.view.inputmethod.EditorInfo;
const selectorWindow = floaty.rawWindow(
<frame id="board" w="*" h="*" gravity="center">
<vertical w="{{ device.height / 2 }}px" height="{{ device.width - 160 }}px" bg="#ffffffff">
<horizontal id="search" w="*" bg="#ffefefef">
<input id="input" inputType="text" layout_weight="1" hint="输入关键词" textColorHint="#ffbbbbbb" imeOptions="actionDone" singleLine="true" focusable="true" focusableInTouchMode="true"></input>
<text id="btnMore" padding="15" textSize="15dp" textColor="#ff0f9086">更多</text>
<text id="btnClose" padding="15" textSize="15dp" textColor="#ff0f9086">关闭</text>
</horizontal>
</vertical>
</frame>
);
ui.run(() => {
selectorWindow.setSize(-1, -1);
selectorWindow.btnMore.click(function (view) {
//展开一个下拉菜单: [清除搜索] [导入文件]
const PopupMenu = android.widget.PopupMenu;
const popupMenu = new PopupMenu(context, view);
console.log(view instanceof android.view.View);
const menu = popupMenu.getMenu();
menu.add("清除搜索");
menu.add("导入文件");
popupMenu.show();
});
});
setInterval(() => {
}, 100);
运行结果: 悬浮窗可以正常显示, 但点击"更多"时没有弹出菜单. Logcat没有报错消息.
ui模式下是正常的:
"ui";
const EditorInfo = android.view.inputmethod.EditorInfo;
ui.layout(
<frame id="board" w="*" h="*" gravity="center">
<vertical w="{{ device.height / 2 }}px" height="{{ device.width - 160 }}px" bg="#ffffffff">
<horizontal id="search" w="*" bg="#ffefefef">
<input id="input" inputType="text" layout_weight="1" hint="输入关键词" textColorHint="#ffbbbbbb" imeOptions="actionDone" singleLine="true" focusable="true" focusableInTouchMode="true"></input>
<text id="btnMore" padding="15" textSize="15dp" textColor="#ff0f9086">更多</text>
<text id="btnClose" padding="15" textSize="15dp" textColor="#ff0f9086">关闭</text>
</horizontal>
</vertical>
</frame>
);
ui.run(() => {
ui.btnMore.click(function (view) {
//展开一个下拉菜单: [清除搜索] [导入文件]
const PopupMenu = android.widget.PopupMenu;
const popupMenu = new PopupMenu(context, view);
console.log(view instanceof android.view.View);
const menu = popupMenu.getMenu();
menu.add("清除搜索");
menu.add("导入文件");
popupMenu.show();
});
});
setInterval(() => {
}, 100);
可以正常弹出菜单.
请问这是Android的限制还是Autojs6的Bug, 亦或是代码存在问题?
(在AutoX.js中运行时结果相同)
我使用了下述代码, 没有发现问题, 你可以在 6.4.1 (稍后发布) 上面试试.
const EditorInfo = android.view.inputmethod.EditorInfo;
const selectorWindow = floaty.rawWindow(
<frame id="board" w="*" h="*" gravity="center">
<vertical w="{{ device.width }}px" height="{{ device.width - 160 }}px" bg="#ffffffff">
<horizontal id="search" w="*" bg="#ffefefef">
<input id="input" inputType="text" layout_weight="1" hint="输入关键词" textColorHint="#ffbbbbbb" imeOptions="actionDone" singleLine="true" focusable="true" focusableInTouchMode="true"></input>
<text id="btnMore" padding="15" textSize="15dp" textColor="#ff0f9086">更多</text>
<text id="btnClose" padding="15" textSize="15dp" textColor="#ff0f9086">关闭</text>
</horizontal>
</vertical>
</frame>
);
ui.run(() => {
selectorWindow.setSize(-1, -2);
selectorWindow.btnMore.click(function (view) {
//展开一个下拉菜单: [清除搜索] [导入文件]
const PopupMenu = android.widget.PopupMenu;
const popupMenu = new PopupMenu(context, view);
console.log(view instanceof android.view.View);
const menu = popupMenu.getMenu();
menu.add("清除搜索");
menu.add("导入文件");
popupMenu.show();
});
selectorWindow.btnClose.click(function (view) {
exit();
});
});
setInterval(() => {}, 1e3);