У меня есть WebView, интегрированное в мое приложение. Проблема, с которой я сталкиваюсь, связана с автозаполнением, которое появляется, когда WebView распознает, что в текстовое поле ранее было введено значение. Текст в автозаполнении кажется белым. Я не добавил никакой функциональности в эти текстовые поля. Веб-страница отображается как есть. Кто-нибудь знает, почему происходит нечто подобное? Есть ли способ установить цвет текста на черный?
На прикрепленном снимке экрана пользователь пытается ввести электронное письмо в текстовое поле, и появляется всплывающее окно с автозаполнением белого цвета.
Следующий код показывает, как я создаю Webview:
myxml.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id = "@+id/viewFrame"
android:background="@color/myColor">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rounded_rectangle"
android:layout_gravity="center"
android:visibility="gone"
android:id = "@+id/imageLayout">
<ImageView android:id="@+id/loading_icon"
android:layout_width="wrap_content"
android:padding="10dp"
android:layout_height="wrap_content"
android:src = "@drawable/loading_ic"/>
</RelativeLayout>
<WebView android:id="@+id/webview"
android:scrollbars="none"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layerType="software" />
</FrameLayout>
MainActivity.java
mWebView = (WebView) root.findViewById(R.id.webview);
mWebView.setWebViewClient(mWebViewClient);
mWebView.setWebChromeClient(mWebChromeClient);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
РЕДАКТИРОВАТЬ: Решение
Поработав над этим несколько часов, я наконец понял, в чем проблема. Я публикую здесь решение, чтобы оно могло помочь другим, кто сталкивается с подобной проблемой. Проблема, как я понимаю, заключается в том, как WebView заменяет поля ввода на веб-странице. Он перекрывает каждое поле ввода с помощью WebTextView (часть WebKit). Этот WebTextView является дочерним для Android.Widget.Autocomplete.
По сути, установка стиля для автозаполнения и DropDownItem кажется подходящим решением:
styles.xml
<style name="ActivityTheme" parent="android:style/Theme.Light">
<item name="android:windowNoTitle">true</item>
<item name="android:autoCompleteTextViewStyle">@style/Widget.AutoCompleteTextViewLight</item>
<item name="android:dropDownItemStyle">@style/Widget.DropDownItemLight</item>
</style>
<style name="Widget.AutoCompleteTextViewLight" parent="@android:style/Widget.AutoCompleteTextView">
<item name="android:textColor">@android:color/primary_text_light</item>
</style>
<style name="Widget.DropDownItemLight" parent="@android:style/Widget.DropDownItem">
<item name="android:textColor">@android:color/primary_text_light</item>
</style>
Теперь примените ActivityTheme к действию в манифесте следующим образом:
android:theme="@style/ActivityTheme"
Эта ссылка помогла мне решить проблему.