gpt4 book ai didi

android - 我可以为 android-support-design 小部件设置应用程序全局自定义样式吗?

转载 作者:行者123 更新时间:2023-12-02 02:36:00 24 4
gpt4 key购买 nike

我想为 Android 支持设计中的一些小部件(如 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 设置 AppBarLayoutlevation="0dp",该 Activity 有自己的主题。查看 Android 支持设计 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);

那么,真的没有办法以这种形式定义样式吗?如果没有,有什么技术原因不提供此功能吗?

最佳答案

Material Components主题您可以在应用程序主题中定义小部件使用的样式。
您可以使用类似以下内容:

<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>

关于android - 我可以为 android-support-design 小部件设置应用程序全局自定义样式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35611187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com