7

我想为导航抽屉中的项目设置一个圆角,如下所示:

在此处输入图像描述

这是material.io网站中的材料设计示例

可能吗 ?

4

3 回答 3

6

只需使用app:itemShapeAppearanceOverlay属性:

<com.google.android.material.navigation.NavigationView
   app:itemShapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Nav"
   ...>

和:

  <style name="ShapeAppearanceOverlay.Nav" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">8dp</item>
  </style>

在此处输入图像描述

于 2019-10-12T19:26:01.407 回答
5

首先,我建议你转向 Flutter,它更直观,并且你获得了 Material 指南的最佳集成流程。

现在,要使用 XML 和 Android Studio 为选中的项目添加圆角、颜色、字体和填充,您可以在 NavigationView 上使用“app”属性:

<android.support.v4.widget.DrawerLayout
    android:layout_width="match_parent"
    ...>

<android.support.design.widget.NavigationView
    android:layout_width="match_parent"
    ...
    app:itemIconTint="@color/custom_color_config"
    app:itemTextColor="@color/custom_color_config"
    app:itemBackground="@drawable/custom_drawable_resource"
    app:itemTextAppearance="@style/custom_style"/>

使用itemIconTintitemTextColor,您可以在选中或未选中时设置孔项(图标和文本)的颜色配置。首先,执行 res > new > directory,并将目录命名为“color”。然后,使用 new > color resource file > custom_color_config (name) 在 color 目录中创建颜色资源文件并输入:

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:color="your_checked_item_color"
        android:state_checked="true" />
    <item
        android:color="your_non_checked_item_color"/>
</selector>

具有 state_checked=true 属性的项目会将其颜色应用于当前导航选中的项目。

要添加背景圆角框,请在 drawable 目录中创建一个新的可绘制资源文件,以便稍后在itemBackground中设置。因此,新建 > 可绘制资源文件 > custom_drawable_resource (name) 并输入:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:left="9dp"
        android:right="9dp"
        android:top="2dp"
        android:bottom="2dp">

        <shape>
            <solid android:color="@color/new_color_resource_name"/>
            <corners android:radius="5dp"/>
        </shape>

    </item>
</layer-list>

接下来,在 color 目录中再次创建第二个颜色资源文件,以与文件 custom_drawable_resource (new_color_resource_name) 中的纯色属性相关联,并将其放入:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:color="your_background_checked_item_color"
        android:state_checked="true" />
    <item 
        android:color="your_background_non_checked_item_color"/>
</selector>

只需在文本外观中添加带有一些半粗体字体的自定义样式。

PD:对不起,如果我的英语不好,我通常读的比写的多,来自 MX 的问候。

于 2019-01-14T10:56:20.587 回答
-2

这是通过navigationview 和menuItem 完成的,并为圆形边框创建一个形状文件,并在selected_checked 处于活动状态和停用时创建一个selected_state 文件。

图片:

于 2019-03-13T04:39:14.040 回答