Android 无法在选项卡上的webview中插入文本
我有两个选项卡,每个选项卡都包含一个webview(为了简单起见,使用google页面)。 web视图加载良好,但当我尝试在Google的搜索字段中插入一些文本时,软键盘会如预期的那样出现,但如果我开始写入一些文本,字段就会失去焦点。 它似乎认为软键盘是选项卡布局的一部分,而不是网页布局的一部分 我花了几个小时尝试我找到的所有解决方案,但其中任何一个都适用于我的情况。 例如:和 任何其他想法都是非常受欢迎的! 我想所有相关代码都发布在下面,否则就问问吧 谢谢 MainActivity.java(碎片活动) WebFragment.javaAndroid 无法在选项卡上的webview中插入文本,android,tabs,android-webview,Android,Tabs,Android Webview,我有两个选项卡,每个选项卡都包含一个webview(为了简单起见,使用google页面)。 web视图加载良好,但当我尝试在Google的搜索字段中插入一些文本时,软键盘会如预期的那样出现,但如果我开始写入一些文本,字段就会失去焦点。 它似乎认为软键盘是选项卡布局的一部分,而不是网页布局的一部分 我花了几个小时尝试我找到的所有解决方案,但其中任何一个都适用于我的情况。 例如:和 任何其他想法都是非常受欢迎的! 我想所有相关代码都发布在下面,否则就问问吧 谢谢 MainActivity.java(
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
webView = (WebView) inflater.inflate(R.layout.activity_web_fragment, container, false);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://www.google.com");
webView.setWebViewClient(new MyWebViewClient());
Log.v("WebFragment", "Returning web view");
webView.requestFocus(View.FOCUS_DOWN);
return webView;
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
if ((event.getKeyCode() == KeyEvent.KEYCODE_BACK) && view.canGoBack()) {
view.goBack();
return true;
}
return super.shouldOverrideKeyEvent(view, event);
}
}
activity_main.xml
<LinearLayout android:id="@+id/LinearLayout1"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TabHost android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="2dp">
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<HorizontalScrollView android:id="@+id/hScrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="none">
<TabWidget android:id="@android:id/tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tabStripEnabled="true"/>
</HorizontalScrollView>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0" />
<FrameLayout android:id="@+id/fragment_content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
</TabHost>
activity_web_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<WebView android:id="@+id/webView"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
你好,安全时间,
我想我找到了解决办法。我相信您已经搜索过了,并在互联网上看到了这篇声称修复错误的变通方法帖子:
webview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
});
然而,它对我不起作用,然后我做了一点改变,它起了作用。希望这对您有所帮助。
Webview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
//The key is this line.
v.requestFocusFromTouch();
break;
}
return false;
}
});
你找到解决这个问题的办法了吗?我面临的正是这个问题。谢谢分享。事实上,没有。。我使用了一种变通方法,在单个活动上显示了webview,没有选项卡。我认为Android认为软键盘属于容器活动,而不是片段。无论如何,如果你找到了解决方案,请让我知道未来的需要。祝你好运谢谢,我会的。在我的情况下,我需要/必须使用tabbar.hii我尝试过,但当我使用v.requestFocusFromTouch()时;出现一些滚动问题,滚动视图未正确滚动请帮助我描述您遇到的问题?
Webview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
//The key is this line.
v.requestFocusFromTouch();
break;
}
return false;
}
});