android - 在 Android XML 中,我可以将 buttonStyleSmall 或 Button.Small 设置为自定义样式的父样式吗?

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

我想扩展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 作为样式和内联样式的按钮:

pic1

以 buttonStyleSmall 为父级的自定义样式:

pic2

我错过了什么?

最佳答案

所以你尝试inherit style informations来自标准的 Android 风格。为此,您需要像之前那样使用 parent 属性。

继承标准样式时唯一的异常(exception)是,您必须使用 @ 而不是 ?:

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

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


玩了一下发现你inhirate的方式是对的,但是recourse是错误的:

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

这有效。

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

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

关于android - 在 Android XML 中,我可以将 buttonStyleSmall 或 Button.Small 设置为自定义样式的父样式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7166791/

相关文章:

android - 如何使用 OKHTTP 处理新证书?

android - String dateTime to Date -> 检查是否是今天

Android 创建一个 "flat button"

android - 在 res/drawable 文件夹中添加图像后,R.java 文件消失

android - 如何访问我的 AndroidManifest.xml 文件中的 BuildConfig 值?

java - list 中的 versionCode 必须随着每次小的更新而改变吗?

Android 操作栏可检查菜单项无法正常工作/显示?

android - 我可以更改主 Activity 的名称吗?

android - 无法为显示类转换异常的包含文件中存在的相对布局动态设置布局参数

android - 不需要的 FrameLayout 拉伸(stretch)以包裹所有 child 的高度(而不是只考虑一个 child 的高度)