java - 迁移到 android studio 后,Android 主题未应用于 API v19(但应用于 API v21)

标签 java android android-studio android-theme android-styles

我最近从 Eclipse 迁移到了 Android Studio。现在我的自定义主题不再适用于 API21 以下的设备。不完全确定,但我想我在迁移时没有改变我的风格。

我拥有的是: (不要怀疑重复项,我有两个用户可选择的主题)

主题.xml:

<?xml version="1.0" encoding="utf-8"?>

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/theme_color</item>
    <item name="colorPrimaryDark">@color/theme_color_dark</item>
    <item name="colorAccent">@color/theme_color_accent</item>
    <item name="android:editTextStyle">@style/EditTextTheme</item>
    <item name="android:textColorHighlight">#99335a9d</item>
    <item name="android:autoCompleteTextViewStyle">@style/AutoCompleteTextViewTheme</item>
    <item name="android:checkboxStyle">@style/CheckBoxTheme</item>
    <item name="android:radioButtonStyle">@style/RadioButtonTheme</item>
    <item name="android:buttonStyle">@style/ButtonTheme</item>
    <item name="android:imageButtonStyle">@style/ImageButtonTheme</item>
    <item name="android:spinnerStyle">@style/SpinnerTheme</item>
    <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItemTheme</item>
    <item name="android:progressBarStyleHorizontal">@style/ProgressBarTheme</item>
    <item name="android:seekBarStyle">@style/SeekBarTheme</item>
    <item name="android:buttonStyleToggle">@style/ToggleTheme</item>
    <item name="android:listViewStyle">@style/ListViewTheme</item>
    <item name="android:spinnerItemStyle">@style/SpinnerItemTheme</item>
    <item name="android:alertDialogTheme">@style/AlertDialog</item>
</style>

<style name="AppThemeDark" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/theme_color</item>
    <item name="colorPrimaryDark">@color/theme_color_dark</item>
    <item name="colorAccent">@color/theme_color_accent</item>
    <item name="android:editTextStyle">@style/EditTextTheme</item>
    <item name="android:textColorHighlight">#99335a9d</item>
    <item name="android:autoCompleteTextViewStyle">@style/AutoCompleteTextViewTheme</item>
    <item name="android:checkboxStyle">@style/CheckBoxTheme</item>
    <item name="android:radioButtonStyle">@style/RadioButtonTheme</item>
    <item name="android:buttonStyle">@style/ButtonThemeDark</item>
    <item name="android:imageButtonStyle">@style/ImageButtonTheme</item>
    <item name="android:spinnerStyle">@style/SpinnerTheme</item>
    <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItemTheme</item>
    <item name="android:progressBarStyleHorizontal">@style/ProgressBarTheme</item>
    <item name="android:seekBarStyle">@style/SeekBarTheme</item>
    <item name="android:buttonStyleToggle">@style/ToggleTheme</item>
    <item name="android:listViewStyle">@style/ListViewTheme</item>
    <item name="android:spinnerItemStyle">@style/SpinnerItemTheme</item>
    <item name="android:alertDialogTheme">@style/AlertDialogDark</item>
</style>

styles.xml

<?xml version="1.0" encoding="utf-8"?>

<style name="EditTextTheme" parent="android:Widget.EditText">
    <item name="android:background">@drawable/theme_edit_text_holo_light</item>
</style>

<style name="AutoCompleteTextViewTheme" parent="android:Widget.AutoCompleteTextView"></style>

<style name="CheckBoxTheme" parent="android:Widget.CompoundButton.CheckBox">
    <item name="android:button">@drawable/theme_btn_check_holo_light</item>
</style>

<style name="RadioButtonTheme" parent="android:Widget.CompoundButton.RadioButton">
    <item name="android:button">@drawable/theme_btn_radio_holo_light</item>
</style>

<style name="ButtonTheme" parent="android:Widget.Button">
    <item name="android:background">@drawable/theme_btn_default_holo_light</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:minWidth">64dip</item>
</style>

<style name="ButtonThemeDark" parent="android:Widget.Button">
    <item name="android:background">@drawable/theme_btn_default_holo_light</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:minWidth">64dip</item>
    <item name="android:textColor">@color/white_color</item>
</style>

<style name="ImageButtonTheme" parent="android:Widget.ImageButton">
    <item name="android:background">@drawable/theme_btn_default_holo_light</item>
</style>

<style name="SpinnerTheme" parent="android:Widget.Spinner">
    <item name="android:background">@drawable/theme_spinner_background_holo_light</item>
    <item name="android:dropDownSelector">@drawable/theme_list_selector_holo_light</item>
</style>

<style name="SpinnerDropDownItemTheme" parent="android:Widget.DropDownItem.Spinner">
    <item name="android:checkMark">@drawable/theme_btn_radio_holo_light</item>
</style>

<style name="TabTheme">
    <item name="android:gravity">center_horizontal</item>
    <item name="android:paddingLeft">16dip</item>
    <item name="android:paddingRight">16dip</item>
    <item name="android:background">@drawable/theme_tab_indicator_holo</item>
    <item name="android:layout_width">0dip</item>
    <item name="android:layout_weight">1</item>
    <item name="android:minWidth">80dip</item>
</style>

<style name="TabTextTheme">
    <item name="android:textSize">12sp</item>
    <item name="android:textStyle">bold</item>
    <!-- v14 <item name="android:textAllCaps">true</item> -->
    <item name="android:ellipsize">marquee</item>
    <item name="android:maxLines">2</item>
    <item name="android:maxWidth">180dip</item>
</style>

<style name="ProgressBarTheme" parent="android:Widget.ProgressBar.Horizontal">
    <item name="android:progressDrawable">@drawable/theme_progress_horizontal_holo_light
    </item>
    <item name="android:indeterminateDrawable">
        @drawable/theme_progress_indeterminate_horizontal_holo_light
    </item>
    <item name="android:minHeight">16dip</item>
    <item name="android:maxHeight">16dip</item>
</style>

<style name="SeekBarTheme" parent="android:Widget.SeekBar">
    <item name="android:progressDrawable">
        @drawable/theme_scrubber_progress_horizontal_holo_light
    </item>
    <item name="android:indeterminateDrawable">
        @drawable/theme_scrubber_progress_horizontal_holo_light
    </item>
    <item name="android:minHeight">13dip</item>
    <item name="android:maxHeight">13dip</item>
    <item name="android:thumb">@drawable/theme_scrubber_control_selector_holo_light</item>
    <item name="android:thumbOffset">16dip</item>
    <item name="android:paddingLeft">16dip</item>
    <item name="android:paddingRight">16dip</item>
</style>

<style name="ToggleTheme" parent="android:Widget.Button.Toggle">
    <item name="android:background">@drawable/theme_btn_toggle_holo_light</item>
    <item name="android:minHeight">48dip</item>
</style>

<style name="ListViewTheme" parent="android:Widget.ListView">
    <item name="android:listSelector">@drawable/theme_list_selector_holo_light</item>
</style>

<style name="SpinnerItemTheme" parent="android:TextAppearance.Widget.TextView.SpinnerItem"></style>

<style name="SwitchStyle">
    <item name="android:thumb">@drawable/theme_switch_inner_holo_light</item>
    <item name="android:track">@drawable/theme_switch_track_holo_light</item>
</style>

<style name="AlertDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorPrimary">@color/theme_color</item>
    <item name="colorAccent">@color/theme_color_accent</item>
    <item name="colorPrimaryDark">@color/theme_color_dark</item>
    <item name="android:windowTitleStyle">@style/Title</item>
    <item name="android:divider">@null</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

<style name="AlertDialogDark" parent="Theme.AppCompat.Dialog">
    <item name="colorPrimary">@color/theme_color</item>
    <item name="colorAccent">@color/theme_color_accent</item>
    <item name="colorPrimaryDark">@color/theme_color_dark</item>
    <item name="android:windowTitleStyle">@style/Title</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:divider">@null</item>
</style>

<style name="Title" parent="Theme.AppCompat.Dialog">
    <item name="android:textColor">@color/theme_color</item>
    <item name="android:textAppearance">?android:attr/textAppearanceLarge</item>
</style>

<!-- used for enhanced list view-->
<style name="elv_fade_animation">
    <item name="@android:windowEnterAnimation">@anim/elv_popup_show</item>
    <item name="@android:windowExitAnimation">@anim/elv_popup_hide</item>
</style>

<!--  custom progress dialog -->
<style name="CustomProgressDialog" parent="Theme.AppCompat.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTitleStyle">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:backgroundDimEnabled">true</item>
</style>

v21/styles.xml

<?xml version="1.0" encoding="utf-8"?>

<style name="EditTextTheme" parent="android:Widget.Material.EditText">
    <item name="android:background">@drawable/theme_edit_text_holo_light</item>
</style>

<style name="AutoCompleteTextViewTheme" parent="android:Widget.Material.AutoCompleteTextView"></style>

<style name="CheckBoxTheme" parent="android:Widget.Material.CompoundButton.CheckBox">
    <item name="android:button">@drawable/theme_btn_check_holo_light</item>
</style>

<style name="RadioButtonTheme" parent="android:Widget.Material.CompoundButton.RadioButton">
    <item name="android:button">@drawable/theme_btn_radio_holo_light</item>
</style>

<style name="ButtonTheme" parent="android:Widget.Material.Button">
    <item name="android:background">@drawable/theme_btn_default_holo_light</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:minWidth">64dip</item>
</style>

<style name="ButtonThemeDark" parent="android:Widget.Material.Button">
    <item name="android:background">@drawable/theme_btn_default_holo_light</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:minWidth">64dip</item>
    <item name="android:textColor">@color/white_color</item>
</style>

<style name="ImageButtonTheme" parent="android:Widget.Material.ImageButton">
    <item name="android:background">@drawable/theme_btn_default_holo_light</item>
</style>

<style name="SpinnerTheme" parent="android:Widget.Material.Spinner">
    <item name="android:background">@drawable/theme_spinner_background_holo_light</item>
    <item name="android:dropDownSelector">@drawable/theme_list_selector_holo_light</item>
</style>

<style name="SpinnerDropDownItemTheme" parent="android:Widget.Material.DropDownItem.Spinner">
    <item name="android:checkMark">@drawable/theme_btn_radio_holo_light</item>
</style>

<style name="TabTheme">
    <item name="android:gravity">center_horizontal</item>
    <item name="android:paddingLeft">16dip</item>
    <item name="android:paddingRight">16dip</item>
    <item name="android:background">@drawable/theme_tab_indicator_holo</item>
    <item name="android:layout_width">0dip</item>
    <item name="android:layout_weight">1</item>
    <item name="android:minWidth">80dip</item>
</style>

<style name="TabTextTheme">
    <item name="android:textSize">12sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:ellipsize">marquee</item>
    <item name="android:maxLines">2</item>
    <item name="android:maxWidth">180dip</item>
</style>

<style name="ProgressBarTheme" parent="android:Widget.Material.ProgressBar.Horizontal">
    <item name="android:progressDrawable">@drawable/theme_progress_horizontal_holo_light</item>
    <item name="android:indeterminateDrawable">@drawable/theme_progress_indeterminate_horizontal_holo_light</item>
    <item name="android:minHeight">16dip</item>
    <item name="android:maxHeight">16dip</item>
</style>

<style name="SeekBarTheme" parent="android:Widget.Material.SeekBar">
    <item name="android:progressDrawable">@drawable/theme_scrubber_progress_horizontal_holo_light</item>
    <item name="android:indeterminateDrawable">@drawable/theme_scrubber_progress_horizontal_holo_light</item>
    <item name="android:minHeight">13dip</item>
    <item name="android:maxHeight">13dip</item>
    <item name="android:thumb">@drawable/theme_scrubber_control_selector_holo_light</item>
    <item name="android:thumbOffset">16dip</item>
    <item name="android:paddingLeft">16dip</item>
    <item name="android:paddingRight">16dip</item>
</style>

<style name="ToggleTheme" parent="android:Widget.Material.Button.Toggle">
    <item name="android:background">@drawable/theme_btn_toggle_holo_light</item>
    <item name="android:minHeight">48dip</item>
</style>

<style name="ListViewTheme" parent="android:Widget.Material.ListView">
    <item name="android:listSelector">@drawable/theme_list_selector_holo_light</item>
</style>

<style name="SpinnerItemTheme" parent="android:TextAppearance.Widget.TextView.SpinnerItem"></style>

<style name="SwitchStyle">
    <item name="android:thumb">@drawable/theme_switch_inner_holo_light</item>
    <item name="android:track">@drawable/theme_switch_track_holo_light</item>
</style>

<style name="AlertDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorPrimaryDark">@color/theme_color_dark</item>
    <item name="android:windowTitleStyle">@style/Title</item>
    <item name="android:divider">@null</item>
</style>

<style name="AlertDialogDark" parent="Theme.AppCompat.Dialog">
    <item name="colorPrimary">@color/theme_color</item>
    <item name="colorAccent">@color/theme_color_accent</item>
    <item name="colorPrimaryDark">@color/theme_color_dark</item>
    <item name="android:windowTitleStyle">@style/Title</item>
    <item name="android:divider">@null</item>
</style>

<style name="Title" parent="Theme.AppCompat.Dialog">
    <item name="android:textColor">@color/theme_color</item>
    <item name="android:textAppearance">?android:attr/textAppearanceLarge</item>
</style>

@drawable 的链接是使用 http://android-holo-colors.com 创建的实际可绘制对象 如果您发现任何其他内容(不良风格或其他),也请告诉我。我是 android 的新手。

最佳答案

由于您使用的是 Theme.AppCompat,因此您不必在项目名称中包含 android: 前缀。您也可以结帐this问题在这里和this如果您想阅读更多相关信息

关于java - 迁移到 android studio 后,Android 主题未应用于 API v19(但应用于 API v21),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30459797/

相关文章:

Android Studio::Gradle 脚本错误 Android()

带有工具提示的 Java Applet

java - Android map : Failed to load map. 无法联系谷歌服务器

android - 此应用与您的设备不兼容

android - 权限 - 如何在运行时在运行 MIUI 的手机中请求和/或更改它们?

更新到 Android Studio 4.1 后,Android 包 View 消失了

java - 导入类库时的安全问题

java - 获取最后一个 LinkedHashSet

java - Android 从选择器中选择然后显示在 map 上

android studio on linux : Gradle build is too slow. 持续1个多小时