android - 如果在 HTC 设备上突出显示,WebViews 中的输入元素始终具有相同的样式

标签 android htcsense

我目前正在编写一个应用程序,它使用嵌入式 WebView 来显示其内容,或者有时使用输入表单从用户那里查询数据。这些表单中的输入字段使用 -webkit-css 样式设置样式。

到目前为止,这在所有设备(在 Nexus One、LG Optimus 500、Samsung Galaxy S 上测试)上都可以正常工作,但带有 HTC Sense 的设备除外。在带有 HTC Sense 的设备上,如果输入元素被选中,样式会丢失。在 css 中使用 input:focus {} 没有帮助,带有 Sense 的 HTC 设备只会忽略。

这张图片说明了这一点,“昵称”当前已被选中,但仍应采用与“Vorname”和“Nachname”相同的样式。

Focus Problem

有什么想法可以解决这个问题吗?

这是一个示例 HTML 页面(根据要求):

<html>
<head>
    <meta name="viewport" content="target-densitydpi=low-dpi" />
    <style type="text/css">
      input[type="number"],
      input[type="text"]{
    border: 1px solid #CDFF3C;
    background: #F3FECA;
    width: 220px;
    -webkit-border-radius: 4px;
        -webkit-box-shadow: inset 1px 1px 4px #AAA;
    -webkit-tap-highlight-color: rgba(205, 255, 60, 0.5);
      }
      body {
        background:#ebffb9;
        margin-right:0;
        margin-left:0;
        font-size: 14px;
      }
    </style>
</head>
<body>
<form name="data" action="/im/postdata" method="get" accept-charset="UTF-8">
  <p class="edit">
    <b>Vorname</b>
    <br/>
    <input type="text" name="3"/>
    </input>
  </p>
</form>
</body>
</html>

无需将其嵌入到应用程序中,只需将其放在某处的网络服务器上,然后使用内置的网络浏览器打开即可。

最佳答案

可能与:How can I style an HTML INPUT tag so it maintains CSS when focused on Android 2.2+? .

或者,您可以通过使用包含 WebView 的 native 应用程序来解决此问题,然后将 res/values/themes.xml 中的主题应用于您的应用程序,该应用程序使用您自己的样式覆盖 webTextViewStyle:


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyTheme" parent="@android:syle/Theme">
        <item name="android:webTextViewStyle">@style/MyWebTextView</item>
    </style>
</resources>

然后在 Manifest 中将此分配给您的应用:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mywebapp" android:versionCode="1" android:versionName="1">
    <uses-permission android:name="android.permission.INTERNET" />

    <application android:icon="@drawable/icon" android:label="@string/app_name"
        android:theme="@style/MyTheme">
        .
        .
        .
    </application>
</manifest>

然后只需将您的 html 加载到您的 WebView 中,然后查看文本输入控件是否采用了新样式。

关于android - 如果在 HTC 设备上突出显示,WebViews 中的输入元素始终具有相同的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170028/

相关文章:

Android:是否有在任何 Android 设备上发送彩信的通用方法?

android - 使用 SoundPool 播放声音

android - 霍夫圆不检测眼睛虹膜

java - (按钮)是什么意思?

android - 拦截 HTC sense 上的 ACTION_CALL Intent

android - 寻找适用于 Android、HTC Sense、三星等皮肤的通用 TabHost 样式

java - 将当前日期时间 [时间戳] 与从日历对话框中选择的日期时间进行比较,并以用户可理解的方式显示

java - 应用内计费进入偏好设置

android - DevicePolicyManager、锁屏和 HTC Sense