2 つのタブがあり、それぞれに Web ビューが含まれています (簡単にするために Google ページを使用)。Web ビューは正常にロードされますが、Google の検索フィールドにテキストを挿入しようとすると、ソフト キーボードが期待どおりに表示されますが、テキストを書き始めるとフィールドがフォーカスを失います。ソフト キーボードは、Web ページ レイアウトではなく、タブ レイアウトの一部と見なされているようです。
見つけたすべての解決策を何時間もかけて試しましたが、私の場合はどれもうまくいきました。例: Android WebView がユーザー入力を拒否するのはなぜですか? および Web ビュー内に入力できません
他のアイデアは大歓迎です!関連するコードはすべて以下に掲載されていると思いますが、それ以外の場合はお尋ねください。
ありがとう!
MainActivity.java (フラグメントアクティビティ)
public void onTabChanged(String selected) {
Fragment shownFragment = fm.findFragmentByTag(shown);
FragmentTransaction ft = fm.beginTransaction();
// Remove the current fragment from screen
if (shownFragment != null) {
ft.remove(shownFragment);
}
// Change to the new fragment
if (selected.equals("Tab1")) {
shown = "Tab1";
ft.add(R.id.fragment_content, new WebFragment(), "Tab1");
} else if (selected.equals("Web")) {
shown = "Web";
ft.add(R.id.fragment_content, new WebFragment(), "Web");
}
ft.commit();
}
WebFragment.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" />