在Android中编辑XML样式表更改按钮

时间:2014-04-21 18:09:00

标签: java android xml

我正在开发一款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代码,请与我们联系。但是,他们都有同样的错误。

感谢您提供任何帮助!

2 个答案:

答案 0 :(得分:0)

而不是android:,请尝试使用@android:style/为您的父引用添加前缀。

答案 1 :(得分:0)

当您修改backgroundButton的{​​{1}}属性时,您将替换已存在的整个背景,这就是您的原因'失去了所有的“格式化”。

所以使用EditText,您看到的默认按钮就是实际图像。

例如,Button位于(path-to-sdk)\ platforms \ android-19 \ data \ res \ drawable-xhdpi

btn_default_normal_holo.9.png

一种方法是创建btn_default_normal_holo.9.png来创建背景。你可以参考Basim Sherif的答案here。在那个问题上,它向你问了一个类似的问题。因此,在这种情况下,您可以使用现有图像并修改颜色。

否则,您需要设置自己的样式(drawables和selectors)以“匹配”原始格式或使用您自己的格式。

另请注意,由于您将按钮的背景设置为颜色,因此不再有任何选择器(例如,在选择按钮时更改颜色)。