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

In Android XML, can I set buttonStyleSmall or Button.Small as a parent style to a custom style?(在Android XML中,我可以将ButtonStyleSmall或Button.Small作为父样式设置为自定义样式吗?)
本文介绍了在Android XML中,我可以将ButtonStyleSmall或Button.Small作为父样式设置为自定义样式吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想扩展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为父级的自定义样式:

我错过了什么?

推荐答案

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

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

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

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


玩了一下,我发现你入侵的方式是正确的,但来源是错误的:

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

这行得通。

不同之处在于,使用style-属性和代码将其相加所使用的整数常量是在attr-子类的andidsR-类中声明的。

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

这篇关于在Android XML中,我可以将ButtonStyleSmall或Button.Small作为父样式设置为自定义样式吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How to target newer versions in .gitlab-ci.yml using auto devops (java 11 instead of 8 and Android 31 instead of 29)(如何在.gitlab-ci.yml中使用自动开发工具(Java 11而不是8,Android 31而不是29)瞄准较新的版本)
Android + coreLibraryDesugaring: which Java 11 APIs can I expect to work?(Android+core LibraryDesugering:我可以期待哪些Java 11API能够工作?)
How to render something in an if statement React Native(如何在If语句中呈现某些内容Reaction Native)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)
Using Firebase Firestore in offline only mode(在仅脱机模式下使用Firebase FiRestore)
Crash on Google Play Pre-Launch Report: java.lang.NoSuchMethodError(Google Play发布前崩溃报告:java.lang.NoSuchMethodError)