如何使用AppCompat v7:21自定义Android中的EditText字段

12

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

奇怪的是,它在lollipop上运行良好,但在kitkat或任何pre-lollipop设备上都无法工作。我以为支持库适用于所有平台。

<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的一个bug,因为在真实设备上,它看起来符合我的预期。 - romtsn
@rom4ek 不,我在我的运行KitKat的设备上尝试过了。下划线是黑色的。我不知道为什么... - iitum studant
就我而言,我只是使用这两个标签:<item name="colorControlActivated">@color/main_color</item> <item name="colorControlHighlight">@color/main_color</item> 来自定义 EditText,所以它对我有用。 - romtsn
我有同样的问题,根据Android开发者博客的FAQ部分描述,导致着色不起作用的可能原因是:“您拥有自己的小部件版本(即,您已扩展EditText)”或“您正在创建EditText而没有LayoutInflater(即调用new EditText())。 ”。在从我的自定义EditText更改为默认EditText后,这个问题得到了解决! - Taynã Bonaldo
我也遇到了同样的问题:我忘记扩展ActionBarActivity。 - Korniltsev Anatoly
2个回答

10

尝试将以下代码添加到您的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_text md_disabled_hint_text colors 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接