2016-07-06 45 views
4

我目前正在开发一个支持NavigationView的Android应用程序。我不得不质疑,因为我想要它: (1)我想将导航元素分为两个区域:一个在顶部下方的标题和一个在底端。 (2)我想删除分隔线和它下面的元素之间的填充。带有内部空间的Android NavigationView

它的外观VS怎样看: How it looks vs how it should look

我知道有一种方法可以覆盖填充值,这将解决(2)。但是这种感觉很脏,也许还有另一种方法来实现这两个。我的想法是获得“设置”元素,并以编程方式更改其布局,但到目前为止,我没有找到一种方法来实现这一目标。或者我真的必须自己制作页脚?

此外,我不太确定我应该使用Google搜索的流行语。也许已经有一个简单的答案了。

我目前的代码。现在,Activity中没有布局更改,因此我没有添加它。

activity_main.xml中:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/main_drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context=".main.MainActivity"> 

    <!-- The content --> 
    <LinearLayout>...</LinearLayout> 

    <!-- The navigation drawer --> 
    <android.support.design.widget.NavigationView 
     android:id="@+id/main_navigationview" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="@android:color/white" 
     app:headerLayout="@layout/mainnav_header" 
     app:itemBackground="@drawable/menu_background" 
     app:itemIconTint="@color/menu_text" 
     app:itemTextColor="@color/menu_text" 
     app:menu="@menu/maindrawer"> 

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

</android.support.v4.widget.DrawerLayout> 

menu.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<group android:id="@+id/main_drawer_menu1" android:checkableBehavior="single"> 
    <item 
     android:id="@+id/main_navigationview_request" 
     android:checkable="false" 
     android:enabled="false" 
     android:icon="@drawable/ic_navigationdrawer_request" 
     android:title="@string/main_navigation_request" 
     app:actionLayout="@layout/menuitem_default" /> 
    <item 
     android:id="@+id/main_navigationview_invitations" 
     android:checked="true" 
     android:icon="@drawable/ic_navigationdrawer_invitations" 
     android:title="@string/main_navigation_invitations" 
     app:actionLayout="@layout/menuitem_default" /> 
    <item 
     android:id="@+id/main_navigationview_prev" 
     android:icon="@drawable/ic_navigationdrawer_previous" 
     android:title="@string/main_navigation_previnvites" 
     app:actionLayout="@layout/menuitem_default" /> 
    <item 
     android:id="@+id/main_navigationview_info" 
     android:icon="@drawable/ic_navigationdrawer_info" 
     android:title="@string/main_navigation_info" 
     app:actionLayout="@layout/menuitem_default" /> 
</group> 
<group android:id="@+id/main_drawer_menu2" android:checkableBehavior="single"> 
    <item 
     android:id="@+id/main_navigationview_settings" 
     android:checked="true" 
     android:icon="@drawable/ic_navigationdrawer_settings" 
     android:title="@string/main_navigation_settings" 
     app:actionLayout="@layout/menuitem_default" /> 
    <item 
     android:id="@+id/main_navigationview_logout" 
     android:icon="@drawable/ic_navigationdrawer_logout" 
     android:title="@string/main_navigation_logout" 

     app:actionLayout="@layout/menuitem_caution" /> 
</group> 

+0

我们可以有你的代码? –

+0

当然,对不起。目前它只是这2个xml文件。活动内没有布局更改 – gtRfnkN

+0

我更喜欢右边的那个,但这不是我想讨论的问题。我只是想找到一种方法使布局看起来像右侧的布局。 – gtRfnkN

回答

2

这条线除去图标和文本之间的填充。

只添加以下行dimen.xml文件

<dimen tools:override="true" name="design_navigation_icon_padding">10dp</dimen>