我刚刚在我的主题中应用了黑色背景图像
<style name="AppBaseTheme" parent="Theme.Sherlock.Light">
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowBackground">@drawable/background</item>
</style>
现在我希望将文本视图的颜色更改为白色,以便它们在深色背景下可见
我认为为 TextView 设置 android:textColor 可以像这样解决问题
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowBackground">@drawable/background</item>
<item name="android:textViewStyle">@style/Ff1TextViewStyle</item>
</style>
<style name="Ff1SpinnerViewStyle" parent="android:Widget.TextView">
<item name="android:textColor">@color/sysWhite</item>
<item name="android:textStyle">bold</item>
</style>
但令我沮丧的是,这完全塞满了各种各样的东西,比如旋转文本和旋转下拉文本,通过将文本更改为白色背景上的白色来操作操作栏下拉菜单,所有这些我之前都非常满意,加上我确信其他控件我还没有使用过或者还没有发现很可能最终会出现白色文本。
我发现很难相信 Android 主题是如此混乱,以至于我无法自信地设置 TextView 小部件的文本颜色而不影响小部件,我只能假设这些小部件是 TextView 小部件的子级,所以我认为它必须只是我缺乏知识才是罪魁祸首,我希望并寻求启蒙,以实现共同的要求。
任何帮助表示赞赏。
我不太确定你是否可以只设置一个样式TextView
, 因为Actionbar
, Spinner
和别的Views
包含TextView
作为他们的孩子,所以正如你所发现的那样,这也会影响他们。在我看来,您应该创建一种样式并将其设置为您的TextView
的。与此类似的东西:
<style name="MyTextView" parent="@android:style/TextAppearance.Small">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">@android:color/white</item>
<item name="android:textSize">12sp</item>
</style>
并在你的TextView
的 xml 声明:
<TextView
style="@style/MyTextView" />
或者您可以做的第二件事是创建您的自定义TextView
public class MyTextView extends TextView {
public MyTextView(Context context){
super(context);
this.setTextColor(android.R.color.white);
}
}
并在您的 xml 文件中使用 MyTextView :
<com.my.package.name.MyTextView
android:id="@+id/my_textview" />
Edit:
为什么设置的事情android:textViewStyle
影响所有其他视图只是因为如果你仔细观察 android 源代码,你会发现其他视图中使用的每个 textview 样式都是android.Widget.TextView
。因此,我认为在这种情况下你能做的最好的事情就是创建一个单一的样式并将其设置为你的TextView
在 xml 中。
希望这些信息能有所帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)