Что делает?attr / mean на Android?
Я работаю над примером о библиотеке поддержки и панели инструментов, это код макета на документации 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?
2 ответов
?attr/
ссылки на атрибуты. Атрибуты-это значения, указанные в теме приложения. Эти конкретные атрибуты в вашем примере - это все значения, указанные в темах, предоставляемых библиотекой поддержки. Андроид имеет свои собственные атрибуты, и они могут быть использованы ?android:attr/
.
в некоторых случаях считается хорошей практикой использовать значения атрибутов вместо значений напрямую, поскольку это позволяет легко настраивать. Например, при создании пользовательских представлений можно использовать ?attr/colorAccent
так что пользователь представления не должен предоставлять цвет, и он будет использовать colorAccent
используется в темах приложения вместо этого.