Стиль Android – разница между @style, android :, @android: стиль и т. Д.

В примерах разработчика, блогах и т. Д. Я видел несколько префиксов для значений атрибутов стиля. Может кто-нибудь описать, когда использовать что? Например, в чем разница между этими тремя случаями?

parent="@android:style/TextAppearance" parent="TextAppearance.AppCompat" parent="@style/TextAppearance.AppCompat" 

В чем разница между этими двумя случаями?

 <item name="colorControlNormal">@color/white</item> <item name="android:colorControlNormal">@color/white</item> 

Без ссылок на префикс стиль, названный в том же файле.

@Style ссылается на файл проекта style.xml .

@android: ссылки на стиль определяют стиль Android API .

Подробнее о стилях Ресурс, стиль и темы .

О colorControlNormal vs android: colorControlNormal – это то же самое объяснение. Если вы используете controlColorNormal, вы определяете цвет, применяемый к элементам управления каркасом в их нормальном состоянии в вашем приложении. Если вы используете android: colorControlNormal, вы переписываете значение по умолчанию, применяемое системой к управлению каркасом.

Вы можете думать о @ как о сигнале, что именованный ресурс подходит.

@type/name определяет ресурс типа type (строка, цвет, макет, стиль и т. Д.) С name указанным в приложении.

@+id/name идентифицирует ресурс идентификатора, name которого будет создано, если оно еще не существует (тогда как @id просто ссылается на уже существующий идентификатор).

@android:type/name означает, что именованный ресурс является частью платформы Android (он не определен в приложении – он предоставляется устройством).

Для родителей стиля @ стиль не является обязательным. Вы можете ссылаться на стили напрямую по имени. Это избыточно, потому что вы все равно не можете вывести стиль из любого другого, кроме другого стиля.