【发布时间】:2023-03-25 21:59:01
【问题描述】:
我在 delphi 下,我使用 android 框架来创建编辑。当我将主题设置为 Theme.DeviceDefault.Light.NoActionBar 时,我可以在我的 EditText 中选择一些文本,然后我会弹出一个带有“全选/剪切/复制/粘贴/等”的弹出窗口,就像你可以见下图。
但是,当我选择 Theme.Material.Light.NoActionBar 或 Theme.Holo.Light.NoActionBar 时,我 无法选择我的 EditText 中的任何文本(我没有左右文本选择句柄)当然我没有任何复制/粘贴弹出窗口
他们有什么方法可以在 Theme_Material_Light_NoActionBar 上有这个复制/粘贴弹出窗口吗?
Theme.DeviceDefault.Light.NoActionBar
Theme_Material_Light_NoActionBar
注意 1:
当我将屏幕移动到水平位置时,edittext 会占用所有可用空间,然后我可以看到如下图所示的左右文本选择句柄,但我认为这是因为主题交换为 Theme .DeviceDefault.Light.NoActionBar 当我将屏幕移动到水平但我不确定时:
注意 2:
在我的 editText 上,当我执行 setCustomSelectionActionModeCallback(new Callback() {}) 时,Callback 永远不会被调用 :( 我认为这不正常?editText 中的什么可以禁止回调?
注意 2:
我可以在所有主题中选择文本(但我不能复制它),但除了 Theme.DeviceDefault.Light.NoActionBar 我看不到左右文本选择句柄。
注意 3:
Theme.DeviceDefault.Light.NoActionBar 仅在三星 Galaxy 等某些手机上显示左右文本选择句柄。在其他一些情况下,它不起作用。
注意 4:
我找到了部分问题的根源!这是因为我通过 WindowManager.addView(view, layout_params) 创建了我的视图,并以这种方式 startactionmodeforChild 返回 null ,这禁止显示操作栏和文本选择句柄。现在如果我在我的编辑文本中做这样的事情:
@Override
public ActionMode startActionMode(ActionMode.Callback callback) {
Activity host = (Activity) this.getContext();
return host.getWindow().getDecorView().startActionMode(callback);
}
然后我可以看到左右文本操作句柄(但不是在棉花糖上,它只在棒棒糖上有效,我不知道为什么)。我现在的问题是显示了操作栏,但它显示为空:(里面没有绘制任何内容(但我可以看到剪切/复制/过去控件在转储视图层次结构中)。所以现在我不是在寻找方法用弹出菜单替换此操作栏(如图片 Theme.DeviceDefault.Light.NoActionBar 上)。知道吗?
【问题讨论】:
-
这个帖子太旧了。无论如何,一个工作示例:worldbestlearningcenter.com/tips/…
-
@boctulus 链接坏了,这里是“回路”web.archive.org/web/20170602162118/http://…
标签: android android-edittext textview android-theme android-styles