我想为 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 海拔 =“0dp”。查看 Android Support Design AppBarLayout源代码,我发现它有一个名为 的主题Widget.Design.AppBarLayout
,所以我做了:
<style name="Theme.MyApp.AppBarLayout" parent="Widget.Design.AppBarLayout">
<item name="elevation">0dp</item>
</style>
但是我没有找到在我的Theme.MyApp
, like中设置它的属性android:editTextStyle
。TextInputLayout、FAB 等也是如此。这些小部件设置直接从资源获取的主题:
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.AppBarLayout, R.style.Widget_Design_AppBarLayout);
那么,真的没有办法以这种形式定义样式吗?如果没有,是否有任何技术原因不提供此功能?