请您帮我理解我关于Android风格和主题的概念吗?
这是我的问题:我希望我的按钮的行为符合以下属性:style="?android:attr/buttonStyleSmall"
在这种情况下,按钮如下所示:
由于我的黑色背景,我觉得我的按钮上有一个白色字体颜色,以获得更好的对比度。我决定在styles.xml文件中创建一个元素来覆盖buttonStyleSmall
样式并添加这个白色字体,以及其他一些变化:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyTheme" parent="android:Theme.Holo.Light">
<item name="android:buttonStyle">@style/ButtonText</item>
</style>
<style name="ButtonText" parent="@android:attr/buttonStyleSmall">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:textColor">#ffffff</item>
<item name="android:gravity">center</item>
<item name="android:paddingLeft">20dp</item>
<item name="android:paddingRight">20dp</item>
<item name="android:paddingTop">10dp</item>
<item name="android:paddingBottom">10dp</item>
<item name="android:textSize">14sp</item>
<item name="android:textStyle">bold</item>
</style>
</resources>
现在,我创建了一个名为MyTheme
的主题,我计划将其应用于整个应用程序。这样我每次创建按钮时都不必声明按钮的样式。所以我只有这样的Button声明:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
不幸的是,当我这样做时,这是我的按钮:
发生什么事了?我确实在我的样式中声明了parent属性,那么为什么按钮中的灰色框会消失?它也不像一个按钮(即:当我点击它时,它不会改变颜色)。 如果我按下这样的按钮声明:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/ButtonText"
android:text="Button" />
同样的问题发生了。
我做错了什么?
谢谢你们, 菲利普
答案 0 :(得分:1)
我相信你想继承@android:style/Widget.Button.Small
。
这将父项指向实际的XML样式定义,而@android:attr/buttonStyleSmall
指向buttonStyleSmall的属性而不是样式本身。