我想为一些来自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>
我的当前问题是为一个特定的Activity设置一个AppBarLayout elevation="0dp",该Activity有其自己的主题。查看Android Support Design AppBarLayout源代码,我发现它有一个名为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);
所以,这种形式没有定义样式的方法吗?如果没有,那么有没有任何技术上的理由不提供这个功能?