管理Android的分层样式(育儿)

时间:2013-04-30 18:24:29

标签: android android-layout

请您帮我理解我关于Android风格和主题的概念吗?

这是我的问题:我希望我的按钮的行为符合以下属性:style="?android:attr/buttonStyleSmall"

在这种情况下,按钮如下所示:this is how I want

由于我的黑色背景,我觉得我的按钮上有一个白色字体颜色,以获得更好的对比度。我决定在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" />

不幸的是,当我这样做时,这是我的按钮:bad style

发生什么事了?我确实在我的样式中声明了parent属性,那么为什么按钮中的灰色框会消失?它也不像一个按钮(即:当我点击它时,它不会改变颜色)。 如果我按下这样的按钮声明:

 <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/ButtonText"
        android:text="Button" />

同样的问题发生了。

我做错了什么?

谢谢你们, 菲利普

1 个答案:

答案 0 :(得分:1)

我相信你想继承@android:style/Widget.Button.Small

这将父项指向实际的XML样式定义,而@android:attr/buttonStyleSmall指向buttonStyleSmall的属性而不是样式本身。