Android Webview Автозаполнение Цвет текста - PullRequest
4 голосов
/ 30 октября 2011

У меня есть 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);

White Text in AutoComplete

РЕДАКТИРОВАТЬ: Решение

Поработав над этим несколько часов, я наконец понял, в чем проблема. Я публикую здесь решение, чтобы оно могло помочь другим, кто сталкивается с подобной проблемой. Проблема, как я понимаю, заключается в том, как 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"

Эта ссылка помогла мне решить проблему.

...