gpt4 book ai didi

android - 如何更改 NavigationView 的项目文本大小?

转载 作者:行者123 更新时间:2023-11-29 02:25:32 26 4
gpt4 key购买 nike

谷歌 recently released android.support.design.widget.NavigationView 小部件作为 com.android.support:design:22.2.0 库的一部分,极大地简化(并标准化)了创建 NavigationDrawer 的过程。

但是根据design specs ,列表项应为 Roboto Medium, 14sp, 87% #000000NavigationView 不公开任何 textSizetextStyle 来自定义它。

Material design specs Font style info

如果我迂腐地使用 Google 提供的 NavigationView(或以任何其他方式自定义)来维护正确的设计规范,我有什么选择?

最佳答案

在文件中创建新样式 app/src/main/res/values/styles.xml

<style name="NavigationDrawerStyle">

<item name="android:textSize">20sp</item><!-- text size in menu-->

<!-- item size in menu-->
<item name="android:listPreferredItemHeightSmall">40dp</item>
<item name="listPreferredItemHeightSmall">40dp</item>

<!-- item padding left in menu-->
<item name="android:listPreferredItemPaddingLeft">8dp</item>
<item name="listPreferredItemPaddingLeft">8dp</item>

<!-- item padding right in menu-->
<item name="android:listPreferredItemPaddingRight">8dp</item>
<item name="listPreferredItemPaddingRight">8dp</item>
</style>

将其添加到您的 main_layout.xml

  <android.support.design.widget.NavigationView
...
app:theme="@style/NavigationDrawerStyle"
....>


</android.support.design.widget.NavigationView>

导航项的所有参数(您可以更改)都位于此处(文件路径 ...\sdk\extras\android\support\design\res\layout\design_navigation_item.xml)

design_navigation_item.xml

<android.support.design.internal.NavigationMenuItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/listPreferredItemHeightSmall"
android:paddingLeft="?attr/listPreferredItemPaddingLeft"
android:paddingRight="?attr/listPreferredItemPaddingRight"
android:drawablePadding="@dimen/navigation_icon_padding"
android:gravity="center_vertical|start"
android:maxLines="1"
android:fontFamily="sans-serif-thin"
android:textSize="22sp"
android:textAppearance="?attr/textAppearanceListItem" />

您也可以覆盖 *.xml文件(从 ...\sdk\extras\android\support\design\res\layout\design_navigation_item.xml 复制文件),就在你的 app/src/main/res/layout 中文件夹创建一个名为相同的布局 design_navigation_item.xml .

所有可以覆盖的布局都位于此处 ...\sdk\extras\android\support\design\res\layout\

design_layout_snackbar.xml
design_layout_snackbar_include.xml
design_layout_tab_icon.xml
design_layout_tab_text.xml
design_navigation_item.xml
design_navigation_item_header.xml
design_navigation_item_separator.xml
design_navigation_item_subheader.xml
design_navigation_menu.xml

[更新]com.android.support:design-{version}的每个版本lib 有不同的项目要覆盖。检查所有你需要的东西

enter image description here

[2020 年 4 月 14 日更新]

如果您使用 com.google.android.material.navigation.NavigationView然后打开类,你会看到:

public NavigationView(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, R.attr.navigationViewStyle);
}

所以你可以使用attr navigationViewStyle通过应用的主题为 NavigationView 设置您自己的样式:

注意:AppTheme 的父主题应该是 Theme.MaterialComponents

    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
...
<item name="navigationViewStyle">@style/AppNavigationViewStyle</item>
...
</style>

<style name="AppNavigationViewStyle" parent="Widget.MaterialComponents.NavigationView">
<item name="itemTextAppearance">@style/AppNavigationViewItemTextAppearance</item>
</style>
<style name="AppNavigationViewItemTextAppearance" parent="@style/TextAppearance.MaterialComponents.Subtitle2">
<item name="android:textSize">18sp</item>
</style>

只需打开父主题即可查看全部<item name覆盖属性

关于android - 如何更改 NavigationView 的项目文本大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52479329/

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