Могу ли я настраивать глобальные пользовательские стили приложения для виджета для поддержки Android?

Я хотел бы определить пользовательские стили для некоторых виджетов из Android Support Design (например, AppBarLayout, TextInputLayout, FAB …) и настроить эти стили по умолчанию для моего проекта, как я могу сделать с EditText и другими системными виджетами. Например:

<style name="Theme.MyApp" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="android:editTextStyle">@style/Theme.MyApp.EditText</item> </style> <style name="Theme.MyApp.EditText" parent="Widget.AppCompat.EditText"> <item name="android:textColor">@color/my_awsome_edittext_color</item> <item name="android:layout_height">wrap_content</item> </style> 

Моя текущая проблема настроена на повышение AppBarLayout elevation = "0dp" для определенного Activity, у которого есть своя тема. Выяснив исходный код AppBarLayout для Android Support Design, я узнал, что у него есть тема Widget.Design.AppBarLayout , поэтому я сделал:

 <style name="Theme.MyApp.AppBarLayout" parent="Widget.Design.AppBarLayout"> <item name="elevation">0dp</item> </style> 

Но я не нашел атрибут, чтобы установить его в моей Theme.MyApp , например, android:editTextStyle . И это верно для TextInputLayout, FAB и так далее. Эти виджеты настраивают свои темы непосредственно из ресурса:

 TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AppBarLayout, R.style.Widget_Design_AppBarLayout); 

Итак, действительно нет способа определить стили в этой форме? Если нет, есть какие-либо технические причины, чтобы не предоставлять эту функцию?

Solutions Collecting From Web of "Могу ли я настраивать глобальные пользовательские стили приложения для виджета для поддержки Android?"