我正在创建一个像这样的"浮动"WebView:
public class MyService extends Service { public static WindowManager windowManager; public static LinearLayout mainView; public WebView webView; @Override public void onCreate() { super.onCreate(); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); // main view mainView = (LinearLayout) inflater.inflate(R.layout.popup, null); WindowManager.LayoutParams mainViewParams = new WindowManager.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT); windowManager.addView(mainView, mainViewParams); // main view - web views webView = (WebView) mainView.findViewById(R.id.webView1); webView.setWebViewClient(new WebViewClient()); } }
主视图是包含WebView的LinearLayout.创建服务时会显示主视图,并且不会附加到任何活动.由于WindowManager.LayoutParams.TYPE_PHONE
旗帜,视图可以漂浮在其他活动之上.
问题是,我无法选择WebView中显示的任何文本.如果我按住某个单词,则选择显示然后会很快消失.用于复制文本等的操作栏不会显示,也不会显示Marshmallow中的上下文菜单.
这是否发生是因为我的观点没有附加到活动?我曾经使用活动和文本选择来实现我的浮动视图工作正常,但我最近改为这种"无活动"方法,因为当我显示/隐藏时我不想处理所有不必要的活动生命周期管理视图.
如何获取文本选择(在我的WebView中)?
编辑:此问题不是WebView特定的.我在主视图中添加了一个EditText,我也无法从中选择文本.
编辑2:这是一个显示问题的示例项目:https://github.com/chinhodado/floating_test.当您运行它时,您将看到无法从EditText和WebView中选择和复制文本.