gpt4 book ai didi

android - ?attr/在Android上是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 23:11:38 28 4
gpt4 key购买 nike

我正在研究一个关于支持库和工具栏的示例,这是 Android 文档上的布局代码

<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

这是我第一次看到这些 ?attr 并且我不知道它们的含义或这些值存储在哪里。这些是自定义的还是在 Android 框架上预定义的?

引用:Android Toolbar Documentation

最佳答案

?attr/对属性的引用。属性是在应用主题中指定的值。您示例中的属性是支持库提供的主题中指定的所有值。 Android 也有自己的属性,可以与 ?android:attr/ 一起使用。 .

最终将使用的实际值取决于用于膨胀所述布局的主题。这个主题可以在 <application/> 的 list 中指定。应用范围主题或 <activity/> 中的 block 阻止特定 Activity 。您还可以在运行时使用不同的上下文覆盖此主题(参见 ContextThemeWrapperLayoutInflater)

在布局中使用主题属性而不是硬编码值被认为是一种很好的做法,因为它允许轻松自定义。例如,当您创建自定义 View 时,您可以使用 ?attr/colorAccent这样 View 的用户就不必提供颜色,它将使用 colorAccent而是在应用程序主题中使用。

这在今天变得更加重要,随着 Android Q 中深色主题的引入,您的布局应该指定一个属性,以便在使用浅色主题和深色主题时最终值不同。

关于android - ?attr/在Android上是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38165168/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com