项目的导航抽屉圆角背景

时间:2018-10-29 22:01:22

标签: android navigation-drawer android-navigation-drawer navigationview android-navigationview

我想为导航抽屉中的项目设置一个圆角:

enter image description here

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

有可能吗?

2 个答案:

答案 0 :(得分:3)

首先,我建议您使用Flutter,它更加直观,并且您获得了Material指南的最佳集成流程。

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

    {
        return $this->belongsToMany(Publication::class);
    }
    public function paragraphs()
    {
        return $this->hasMany(Paragraph::class);
    }

使用 itemIconTint itemTextColor 可以设置是否选中孔项目(图标和文本)的颜色配置。首先,执行res> new>目录,并将目录命名为“ color”。然后,使用新的>颜色资源文件> custom_color_config(名称)在颜色目录中创建 颜色资源文件 ,并放置以下内容:

    {
        return $this->belongsTo(Chapter::class);
    }

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

要添加背景圆角框,请在drawable目录中创建一个新的 drawable资源文件 ,稍后再在 itemBackground 中进行设置。因此,新建>可绘制资源文件> custom_drawable_resource(名称),然后将其放入:

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

然后,在颜色目录中再次创建第二个 颜色资源文件 ,以与文件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_checked_item_color"
        android:state_checked="true" />
    <item
        android:color="your_non_checked_item_color"/>
</selector>

然后 VOILA!只需将带有一些半粗体字体的自定义样式添加到文本外观即可。

PD:很抱歉,如果我的英语不好,我通常会阅读比写的多的东西,请问来自MX。

答案 1 :(得分:0)

只需使用 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>

enter image description here