【问题标题】:How to customize EditText field in android using AppCompat v7:21如何使用 AppCompat v7:21 在 android 中自定义 EditText 字段
【发布时间】:2015-03-20 20:08:18
【问题描述】:

我正在使用 Appcompatv7 21 并尝试自定义 editText 字段。

奇怪的是,它在棒棒糖上运行良好,但在 kitkat 或任何棒棒糖之前的设备上不工作。我认为支持库适用于所有平台。

<style name="mAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="colorControlNormal">@color/veryLightGrey</item>
    <item name="colorControlActivated">@color/colorAccent</item>
    <item name="colorControlHighlight">@color/colorAccent</item>
</style>


compile 'com.android.support:appcompat-v7:21.0.3'

物理设备的屏幕截图。

【问题讨论】:

  • 我认为这是 Android Studio 的错误,因为在真实设备上它看起来符合我的预期。
  • @rom4ek 不,我在运行 kitkat 的设备上尝试过。下划线变为黑色。我不知道为什么....
  • 对我来说,我只是使用这两个标签:&lt;item name="colorControlActivated"&gt;@color/main_color&lt;/item&gt; &lt;item name="colorControlHighlight"&gt;@color/main_color&lt;/item&gt; 来自定义 EditText,所以它对我有用。
  • 我有同样的问题,根据 android developer blogspot,FAQ 部分描述了 tint 不起作用的可能原因:“您有自己的自定义小部件版本(即您已扩展 EditText)”或“您正在创建没有 LayoutInflater 的 EditText(即,调用 new EditText())。”。从我的自定义 EditText 更改为默认 EditText 后,这工作正常!
  • 遇到了同样的问题:我忘记扩展 ActionBarActivity

标签: android android-5.0-lollipop android-appcompat material-design


【解决方案1】:

尝试在 EditText 中添加下一个代码

style="@style/Widget.AppCompat.EditText"

签入真实设备。

在我的EditText 作品中,这是我的EditText:

<EditText
    android:id="@+id/editTextFacebookID"
    style="@style/Widget.AppCompat.EditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_marginLeft="64dp"
    android:layout_marginRight="8dp"
    android:gravity="center_vertical"
    android:hint="Facebook ID"
    android:textColor="@color/md_text"                
    android:textColorHint="@color/md_disabled_hint_text" />

您可以在此处查看 md_textmd_disabled_hint_text 颜色Google Colors

这是我的应用的 v19 风格:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/md_red_500</item>
    <item name="colorPrimaryDark">@color/md_red_700</item>
    <item name="colorAccent">@color/md_blue_A200</item>
    <item name="colorControlHighlight">@color/md_black_1000_25</item>
    <item name="colorControlNormal">@color/md_black_1000_50</item>
    <item name="colorSwitchThumbNormal">@color/md_grey_200</item>
    <item name="android:colorForeground">@color/md_black_1000_75</item>
    <item name="android:windowTranslucentNavigation">@bool/translucentNavigationBar</item>
    <item name="android:windowTranslucentStatus">@bool/translucentStatusBar</item>

    <!-- Navigation Drawer Arrow Style. -->
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>

    <!-- Overflow Button Style. -->
    <item name="actionOverflowButtonStyle">@style/OverflowStyle</item>
</style>

我的 EditText 未聚焦时为灰色,聚焦蓝色,它采用 colorAccent 的颜色。

当我更改 AppTheme 时它会改变颜色。

【讨论】:

    【解决方案2】:

    更好的是,只需将其从 EditText 更改为 AppCompatEditText 即可。受益于您已经在使用的AppCompat

    源代码:http://android-developers.blogspot.ae/2014/10/appcompat-v21-material-design-for-pre.html

    【讨论】:

      猜你喜欢
      • 2015-06-30
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      • 1970-01-01
      • 2015-08-26
      相关资源
      最近更新 更多