首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以为android-support-design小部件设置app全局自定义样式吗?

我可以为android-support-design小部件设置app全局自定义样式吗?
EN

Stack Overflow用户
提问于 2016-02-25 03:24:19
回答 1查看 689关注 0票数 11

我想为安卓支持设计中的一些小部件定义自定义样式(如AppBarLayout,TextInputLayout,FAB...)并将这些样式设置为我的项目的默认样式,就像我可以使用EditText和其他系统小部件一样。例如:

代码语言:javascript
复制
<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“,它有自己的主题。查看安卓支持设计AppBarLayout的源代码,我发现它有一个名为Widget.Design.AppBarLayout的主题,所以我这样做了:

代码语言:javascript
复制
<style name="Theme.MyApp.AppBarLayout" parent="Widget.Design.AppBarLayout">
    <item name="elevation">0dp</item>
</style>

但是我没有找到像android:editTextStyle这样的属性来在我的Theme.MyApp中设置它。对于TextInputLayout、FAB等也是如此。这些小部件设置了直接从资源获取的主题:

代码语言:javascript
复制
TypedArray a = context.obtainStyledAttributes(attrs, 
    R.styleable.AppBarLayout, R.style.Widget_Design_AppBarLayout);

那么,真的没有办法在这个表单中定义样式吗?如果没有,有没有什么技术原因不提供这个功能?

EN

回答 1

Stack Overflow用户

发布于 2019-11-11 21:34:22

使用Material Components主题,您可以在应用程序主题中定义小部件使用的样式。

您可以使用类似以下内容:

代码语言:javascript
复制
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">

    <!-- Widget styles -->
    <item name="appBarLayoutStyle">@style/Widget.MaterialComponents.AppBarLayout.Primary</item>
    <item name="badgeStyle">@style/Widget.MaterialComponents.Badge</item>
    <item name="bottomAppBarStyle">@style/Widget.MaterialComponents.BottomAppBar</item>
    <item name="bottomNavigationStyle">@style/Widget.MaterialComponents.BottomNavigationView</item>
    <item name="chipStyle">@style/Widget.MaterialComponents.Chip.Action</item>
    <item name="chipGroupStyle">@style/Widget.MaterialComponents.ChipGroup</item>
    <item name="chipStandaloneStyle">@style/Widget.MaterialComponents.Chip.Entry</item>
    <item name="extendedFloatingActionButtonStyle">@style/Widget.MaterialComponents.ExtendedFloatingActionButton.Icon</item>
    <item name="floatingActionButtonStyle">@style/Widget.MaterialComponents.FloatingActionButton</item>
    <item name="materialButtonStyle">@style/Widget.MaterialComponents.Button</item>
    <item name="materialButtonOutlinedStyle">@style/Widget.MaterialComponents.Button.OutlinedButton</item>
    <item name="materialButtonToggleGroupStyle">@style/Widget.MaterialComponents.MaterialButtonToggleGroup</item>
    <item name="materialCardViewStyle">@style/Widget.MaterialComponents.CardView</item>
    <item name="navigationViewStyle">@style/Widget.MaterialComponents.NavigationView</item>
    <item name="sliderStyle">@style/Widget.MaterialComponents.Slider</item>
    <item name="snackbarStyle">@style/Widget.MaterialComponents.Snackbar</item>
    <item name="snackbarButtonStyle">@style/Widget.MaterialComponents.Button.TextButton.Snackbar</item>
    <item name="snackbarTextViewStyle">@style/Widget.MaterialComponents.Snackbar.TextView</item>
    <item name="tabStyle">@style/Widget.MaterialComponents.TabLayout</item>
    <item name="textInputStyle">@style/Widget.MaterialComponents.TextInputLayout.FilledBox</item>
    <item name="toolbarStyle">@style/Widget.MaterialComponents.Toolbar</item>
</style>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35611187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档