在Android全屏活动模板中,为什么空样式会改变按钮的外观?

在Android全屏活动模板中,为什么空样式会改变按钮的外观?,android,android-layout,Android,Android Layout,按钮已在活动的XML布局中设置为: <Button android:id="@+id/dummy_button" style="?buttonBarButtonStyle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/dummy_button" /> 需

按钮已在活动的XML布局中设置为:

<Button
    android:id="@+id/dummy_button"
    style="?buttonBarButtonStyle"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="@string/dummy_button" />

需要注意的部分是style=“?buttonBarButtonStyle”。查询样式的定义在styles.xml中定义为:

<style name="ButtonBarButton" />

该样式实际上没有为按钮设置任何值,因此我无法理解为什么要更改按钮及其显示方式

当按钮被设置为使用空样式时,它如下所示:

但是,当删除线条样式=“?buttonBarButtonStyle”时,它看起来像一个标准按钮,如下所示:

起初,我认为分配空样式将替换按钮的默认样式设置,但在我自己的应用程序中尝试这一点并不会改变按钮的外观(正如我预期的空样式所做的那样)


有人能准确地解释为什么这种空样式会改变外观吗?要自己复制这个功能,您可以使用“全屏活动”创建一个新的应用程序。

我不知道您对什么感到惊讶。按钮的通常外观是第二张图像中的外观,因此当应用样式时,内部矩形将被删除,这是一种自定义外观。如果您看到没有任何自定义样式的按钮,您会看到它们看起来像第二张图像中的按钮。

您的
按钮按钮按钮
按钮按钮按钮样式
彼此没有关系。应用
buttonBarButtonStyle
style,它是一个主题属性,为条形按钮定义了一些样式。如果可以将自定义空样式应用于按钮,请使用:

style="@style/ButtonBarButton"

我知道默认按钮是什么样子的,我对我的问题做了进一步的澄清,以强调应用于按钮的自定义样式实际上是完全空的。我想知道为什么这个空样式会对按钮的显示产生任何影响,就像我在另一个应用程序中测试这个一样,分配一个空样式不会改变按钮的任何内容(这是我认为应该发生的)。嗯,好吧,我现在明白了。我猜这与eclipse自动生成的事实有关。但是很抱歉,我不知道更多关于这件事的事情。澄清了这个问题,以便更清楚地说明发生了什么。当我测试这是另一个应用程序时,为按钮指定一个空样式,它绝对不会改变按钮的显示方式。这完全改变了一切)ButtonBarButton是属性返回的样式,在values/styles.xml中,是我读过的唯一的styles.xml。当我明确指定样式时(根据上面的行),我发现了我的问题所在。因为我只查看了styles.xml,而没有查看其他的,所以我没有在values-v14/styles.xml中发现它返回了与属性不同的样式。我最近才开始研究样式,所以这就是为什么我没有考虑其他API版本的xml。谢谢你的帮助!