【问题标题】:In Android XML, can I set buttonStyleSmall or Button.Small as a parent style to a custom style?在 Android XML 中,我可以将 buttonStyleSmall 或 Button.Small 设置为自定义样式的父样式吗?
【发布时间】:2011-08-23 19:57:46
【问题描述】:

我想扩展 Android 的小按钮样式。我可以内联:

<Button android:id="@+id/myButton"
        style="?android:attr/buttonStyleSmall"
        android:layout_alignParentRight="true"
        android:layout_gravity="right"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:textSize="10dp"
        android:text="Click Here"/>

但出于可重用性的考虑,我想将这些样式转换为自定义样式。如何将buttonStyleSmall(或Widget.Button.Small?)作为父级添加到样式?在我的自定义样式 XML 中是这样的:

<style name="RightLink" parent="?android:attr/buttonStyleSmall">
  <item name="android:layout_alignParentRight">true</item>
  <item name="android:layout_gravity">right</item>
  <item name="android:layout_height">wrap_content</item>
  <item name="android:layout_width">wrap_content</item>
  <item name="android:paddingLeft">2dp</item>
  <item name="android:paddingRight">2dp</item>
  <item name="android:textSize">10dp</item>
</style>

使用该样式的按钮声明:

<Button android:id="@+id/myButton"
        style="@style/RightLink"
        android:text="Click Here"/>

编辑

使用下面 Lukas 描述的正确语法(使用 @android:attr/buttonStyleSmall 作为父级),我仍然看到两者之间的区别:

以 buttonStyleSmall 为样式并添加了内联样式的按钮:

以 buttonStyleSmall 为父的自定义样式:

我错过了什么?

【问题讨论】:

  • 嗨,这个问题的完整解决方案是什么?你能发布完整的代码吗?

标签: android android-layout android-xml android-styles


【解决方案1】:

所以你尝试从标准的 Android 风格inherit style informations。为此,您需要像以前一样使用parent-attribute。

继承标准样式的唯一例外是,您必须使用@ 而不是?

<style name="RightLink" parent="@android:attr/buttonStyleSmall">

有关如何为平台样式执行此操作的更多信息(因为这与您自己创建的样式不同)可以找到here


玩了之后发现你吸的方式是对的,但是追索是错误的:

<style name="RightLink" parent="@android:style/Widget.Button.Small">

这行得通。

不同之处在于,用于通过使用style-attribute 和在代码中添加它的整数常量在Androids R-class 中的attr-subclass 中声明。

XML 样式定义(您实际上可以从中继承)存储在R 类的style 子类中。所以上面这行应该可以解决你的问题。

【讨论】:

  • 所以我很困惑,
  • @DanielOchoa 我没试过,如果它编译,你应该没问题。
  • 与@DanielOchoa 相同,表示它不是有效行
  • &lt;style name="RightLink" parent="@android:style/Widget.Button.Small"&gt; 很好,但我浪费了一些时间来处理&lt;style name="RightLink" parent="@android:attr/buttonStyleSmall"&gt;,它给出了无效的父引用。
猜你喜欢
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多