如何使用AppCompat v7:21在android中自定义EditText字段

如何使用AppCompat v7:21在android中自定义EditText字段,android,android-5.0-lollipop,android-appcompat,material-design,Android,Android 5.0 Lollipop,Android Appcompat,Material Design,我正在使用Appcompatv7 21并尝试自定义editText字段 奇怪的是,它在棒棒糖上运行良好,但在kitkat或任何棒棒糖前设备上都不起作用。我认为支持库可以在所有平台上运行 <style name="mAppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrima

我正在使用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'

@颜色/原色
@颜色/原色暗
@颜色/颜色重音
@颜色/浅灰色
@颜色/颜色重音
@颜色/颜色重音
编译'com.android.support:appcompat-v7:21.0.3'

来自物理设备的屏幕截图。

尝试在编辑文本中添加下一个代码

style="@style/Widget.AppCompat.EditText"
签入真实设备

在my
EditText
works中,这是我的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_文本和md_禁用的提示_文本颜色:

这是我的应用程序的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>

@颜色/md_红色_500
@颜色/md_红色_700
@颜色/md_蓝色_A200
@颜色/md\U黑色\U 1000\U 25
@颜色/md_黑色_1000_50
@颜色/md\U灰色\U 200
@颜色/md_黑色_1000_75
@布尔/半透明导航栏
@布尔/半透明状态栏
@样式/抽屉箭头样式
@样式/溢出样式
我的EditText在未聚焦时为灰色,而在聚焦时为蓝色,颜色取自colorAccent


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

更好的是,只需将它从
EditText
更改为
AppCompatitEditText
,就可以了。从您已经使用的
AppCompat
中获益


src:

我认为这是Android Studio的一个缺陷,因为在真实的设备上它看起来和我期望的一样。@rom4ek没有,我在运行kitkat的设备上试过。下划线是黑色的。我不知道为什么……对于我来说,我只是使用这两个标签:
@color/main\u color@color/main\u color
来定制EditText,所以它对我有效。我也有同样的问题,根据android开发者blogspot,常见问题部分描述了色调不起作用的可能原因:“你有自己的自定义版本的小部件(即,您已扩展了EditText)“或”您正在创建没有LayoutInflater的EditText(即,调用新的EditText())。”在将自定义EditText更改为默认EditText后,此工作正常!出现了相同的问题:我忘了扩展ActionBarActivity