【问题标题】:Android Styles For API 10 and API 11API 10 和 API 11 的 Android 样式
【发布时间】:2013-01-05 00:12:52
【问题描述】:

我正在尝试做一些我觉得概念上非常简单的事情。我希望我的应用程序一直支持 API 10(姜饼)。为了使它看起来不错,我需要在设备运行 API 10 时对按钮上的文本颜色进行轻微更改。因此,我想创建两种样式:其中一种将在设备使用时使用API 10(在这种情况下,我希望按钮的文本颜色为黑色),另一个当设备使用 API 11 或更高版本时(在这种情况下,文本颜色将是默认的 ICS 灰色)。为此,我使用了 values 和 values-v11 文件夹。在 values 文件夹中是一个 theme.xml 文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="buttonColorStyle">
        <item name="android:textAppearanceButton">@style/buttonTextColor</item>
    </style>

    <style name="buttonTextColor">
       <item name="android:textColor">#FFFFFF</item>
    </style>
</resources> 

但是,当我在目标 SDK 设置为 10 的情况下加载我的应用程序时,按钮的文本颜色与默认的灰色保持不变。另外,这是我的一个按钮的代码,它应该使用这种样式:

<Button
        style="@style/buttonColorStyle"
        android:id="@+id/thirdSectionButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:onClick="sectionButtonClicked"
        android:text="Section 3"
        android:textSize="11.5sp" />

有人有什么想法吗?

【问题讨论】:

  • 为什么要更改 targetSdk 值?将 minimumSdk 设置为 10,将 targetSdk 设置为最高(当前为 17)。只需将您的模拟器作为 API-10 设备运行,或使用运行 Gingerbread 的实际设备。
  • 同意 - 我这样做只是为了方便。但是,这会对结果产生影响吗?
  • 是的,改变了它编译的 android 版本。如果它引用的主题在这些版本之间发生了变化,那么当你运行它时就会显示出来。
  • 这与将我的目标 SDK 设置为 10 有何不同?
  • 致被否决的人:愿意表达你对这个问题的问题,以便我可以改进它?

标签: java android xml android-theme


【解决方案1】:

你必须这样做:

 <style name="MyStlye">
        <item name="android:textAppearanceButton">@style/BtnText</item>
 </style>

 <style name="BtnText" parent="android:TextAppearance.Small.Inverse">
        <item name="android:textColor">@android:color/black</item> // or whatever color
 </style>

【讨论】:

  • 我试过你的建议,但没有奏效。请参阅我修改后的问题。
  • 你忘记继承parent="TextAppearance.Small.Inverse"的所有样式
  • 你不应该,如果我没记错的话,TextAppearance.Small.Inverse 在 API 7 之前就已经存在了...
【解决方案2】:

为什么不为所有版本设置相同的漂亮样式?

你可以use this library(也建议在android开发者博客here)让所有设备都使用holo主题。

或者,离开当前的风格,这样用户就会对他当前的操作系统风格感到更加“自在”(因为它可以在公司之间改变)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2012-08-02
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多