我有一个应用程序,我在其中使用导航抽屉,在此我使用导航视图。代码段如下
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_gravity="start"
app:headerLayout="@layout/header"
app:menu="@menu/drawer"
/>
在菜单中我有这个 drawer.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/home"
android:checked="false"
android:icon="@drawable/home"
android:title="@string/home_string" />
<item
android:id="@+id/offer"
android:checked="false"
android:icon="@drawable/offer_"
android:title="@string/offer_string" />
<item
android:id="@+id/take"
android:checked="false"
android:icon="@drawable/take"
android:title="@string/take_string" />
<item
android:id="@+id/share"
android:checked="false"
android:icon="@drawable/share"
android:title="@string/share_string" />
<item
android:id="@+id/offer_status"
android:checked="false"
android:icon="@drawable/my_status"
android:title="@string/offer_status" />
<item
android:id="@+id/about_us"
android:checked="false"
android:icon="@drawable/about_us"
android:title="" />
</group>
</menu>
这是完美的工作,因为图标显示在左侧,相应的文本显示在导航抽屉中的图像视图的右侧。 但是现在我必须在右边的文本中使用整个图像,因为我的新图像中包含了名称,所以不需要将相应的字符串放在右边。
但如果我只是替换他们挤压的图像,我认为因为新的导航菜单有其图像限制。如果我从项目中删除字符串,它会给我错误,因为项目必须有标题字符串。所以我把空字符串,但它做的相同,我的意思是它挤压图像。
那么我应该怎么做才能在完整的单行导航菜单中显示完整的图像?任何帮助和想法请分享
答案 0 :(得分:1)
我担心如果您想要使用此菜单自定义任何内容,您必须自己实施菜单,而不是使用NavigationView
。我个人在LinearLayout
内部使用垂直ScrollView
,并将样式应用于所有TextView和ColorFilters以对图标进行着色。
以下是一些建议:
LinearLayout
内的ScrollView
开始,为每个具有正确Drawable的部分添加一个可选标题,后跟一个ImageView
。ImageView
上设置唯一ID。View.OnClickListener
上设置一个ImageView
。单击视图时,使用视图ID确定用户选择了哪个部分。要使用原色为当前部分Drawable着色,请使用如下代码:
int primaryColor = getResources().getColor(R.color.color_primary);
sectionImageView.getDrawable().mutate().setColorFilter(primaryColor, PorterDuff.Mode.SRC_IN);
(调用setColorFilter(null)
将其重新设置为正常颜色)
如果您想要更精细的代码,请查看&#34; FOSDEM Companion&#34;的源代码: