【问题标题】:Why are some of my styles not working with lower APIs?为什么我的某些样式不适用于较低的 API?
【发布时间】:2016-04-12 19:50:58
【问题描述】:

我有个小问题!

在我的 styles.xml 文件中,我有

<style name="TextViewStyle" parent="android:Widget.TextView">
    <item name="android:padding">20px</item>
    <item name="android:background">#9cd0e8</item>
    <item name="android:textColor">#254b7c</item>
    <item name="android:textSize">18sp</item>
    <item name="android:textStyle">bold</item>
</style>

在我的 activity_main.xml 中,我有

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:theme="@+styles/TextViewStyle"
    android:text="Sample Text"/>

我想要做的是,在我的 Android 应用程序中,我计划在某个活动上放置许多具有相似属性的 TextView。我不是每次都为每个 TextView 实例编写这些“属性”,而是在 styles.xml 文件中将它们分组到一个样式中,并将每个 TextView 的主题设置为该样式。

它工作正常,可以做我想做的事,但只适用于 21 以上的 API!我的应用程序应该支持 API 级别 15 以上的设备。为什么我的方法不适用于较低的 API?

请尽快提供帮助。我需要尽快完成。

编辑

通过“工作”,我的意思是我在我的样式中设置的属性(填充、颜色等)按应有的方式出现在 TextView 上。然而,在较低的 API 中,TextView 看起来好像我没有在它们上应用任何属性。显示纯文本而不是样式文本。

【问题讨论】:

  • 这两个版本有什么不同?例如,什么不起作用?
  • @ChrisStillwell 通过“工作”,我的意思是我在我的样式中设置的属性(填充、颜色等)应该出现在 TextViews 上。然而,在较低的 API 中,TextView 看起来好像我没有在它们上应用任何属性。显示纯文本而不是样式文本。
  • 既然你已经有了资源文件,你就不需要styles/TextViewStyle前面的“+”了。不确定这是否会为您解决问题,但值得一试。
  • @ChrisStillwell 不,这并没有解决我的问题。

标签: android textview android-theme android-styles


【解决方案1】:
  1. 从您的样式中移除父级
  2. 从 textView 中移除 android:theme,(为什么会有 + 号?)
  3. 把它放到你的 textView 中,而不是主题

style="@style/TextViewStyle"

顺便说一句,使用 dp 而不是 px ;)

【讨论】:

猜你喜欢
  • 2018-09-03
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 2015-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多