我正在开发一款Android应用,并决定改变整个应用的颜色,所以我使用了xml样式表。这改变了我的颜色,但它没有改变我的EditText,TextView和Button颜色,所以我不得不为每个元素制作一个单独的样式表,然后从我正在使用的主颜色表中调用这些表。
然而,一旦我这样做了,三个小部件的颜色适当,但是盒子缩小并破坏了我们的整个布局。我们相信这是因为我们已经覆盖了那些默认样式,但我想它的编写方式,我们只是覆盖了颜色选项。
我想弄清楚如何更改EditText,TextView和Button的颜色,但不改变它们的格式。
我们项目的Styles.xml:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<color name="oldblue">#33b5e5</color>
<color name="gungrey">#9C9C9C</color>
<color name="textGold">#ffe27e</color>
<color name="backgroundBlack">#000000</color>
<color name="buttonGrey">#222222</color>
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:textColor">@color/textGold</item>
<item name="android:windowBackground">@color/backgroundBlack</item>
<item name="android:colorBackground">@color/backgroundBlack</item>
<item name="android:editTextStyle">@style/TextEditStyle</item>
<item name="android:textViewStyle">@style/TextViewStyle</item>
<item name="android:buttonStyle">@style/OurButtonStyle</item>
</style>
<!-- Allows us to edit the EditText field -->
<style name="TextEditStyle" parent="android:Widget.EditText">
<item name="android:background">#e3e3e3</item>
</style>
<!-- Allows us to edit the TextView words (much of the app text) -->
<style name="TextViewStyle" parent="android:Widget.TextView">
<item name="android:textColor">@color/textGold</item>
</style>
<!-- Allows us to edit the Buttons in the app -->
<style name="OurButtonStyle" parent="android:Widget.Button">
<item name="android:textColor">@color/textGold</item>
<item name="android:background">@color/buttonGrey</item>
<item name="android:padding">10dp</item>
<!-- This line here helped us fix the issue with the buttons colliding with the textboxes, but ideally, we want to change a single thing and fix all the widgets and not have to use padding here -->
</style>
</resources>
我们的应用在所有页面上使用线性布局。如果可能的话,我们希望保持这种方式。 如果您需要查看各个页面的任何屏幕截图或xml代码,请与我们联系。但是,他们都有同样的错误。
感谢您提供任何帮助!
答案 0 :(得分:0)
而不是android:
,请尝试使用@android:style/
为您的父引用添加前缀。
答案 1 :(得分:0)
当您修改background
或Button
的{{1}}属性时,您将替换已存在的整个背景,这就是您的原因'失去了所有的“格式化”。
所以使用EditText
,您看到的默认按钮就是实际图像。
例如,Button
位于(path-to-sdk)\ platforms \ android-19 \ data \ res \ drawable-xhdpi
一种方法是创建btn_default_normal_holo.9.png
来创建背景。你可以参考Basim Sherif的答案here。在那个问题上,它向你问了一个类似的问题。因此,在这种情况下,您可以使用现有图像并修改颜色。
否则,您需要设置自己的样式(drawables和selectors)以“匹配”原始格式或使用您自己的格式。
另请注意,由于您将按钮的背景设置为颜色,因此不再有任何选择器(例如,在选择按钮时更改颜色)。