2015-07-24 3 views
1

У меня есть приложение, в котором я использую навигационный ящик, и в этом я использую навигационное представление. фрагмент кода выглядит следующим образомНавигация в пользовательском ящике навигации состоит только из изображения Только

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

это прекрасно работает как иконки показывает в левой и соответствующий текст показывает направо зрения изображения в навигационный ящик. , но теперь я должен использовать все изображение без текста справа от него, так как мои новые изображения содержат имя в нем, поэтому нет необходимости поместить соответствующую строку в нужное положение.

, но если я просто заменил изображения, они получили сжатие, и я думаю, потому что новое меню навигации имеет свои ограничения для изображения. и если я удалю строку из элемента, она даст мне ошибку, поскольку элемент должен иметь строку заголовка. поэтому я помещаю пустую строку, но она делает то же самое, что я имею в виду, что она сжимает изображение.

Итак, что мне нужно сделать, чтобы показать полное изображение в одной строке меню навигации? любая помощь и идея, пожалуйста, поделитесь

ответ

1

Я боюсь, если вы хотите что-либо в этом меню, вам нужно реализовать меню самостоятельно, а не использовать NavigationView. Я лично использую вертикаль LinearLayout внутри ScrollView со стилем, применяемым ко всем TextViews и ColorFilters, чтобы подкрасить значки.

Вот некоторые предложения:

  • Начните с LinearLayout внутри ScrollView, добавить дополнительный заголовок, за один ImageView для каждой секции с соответствующим Drawable.
  • Установите уникальный идентификатор на каждом ImageView, представляющий раздел.
  • Установите один View.OnClickListener на каждый ImageView, представляющий раздел. Когда щелчок открывается, используйте идентификатор вида, чтобы определить, какой раздел был выбран пользователем.

Чтобы цвет текущей раздела вытяжки с основным цветом, используйте такой код:

int primaryColor = getResources().getColor(R.color.color_primary); 
sectionImageView.getDrawable().mutate().setColorFilter(primaryColor, PorterDuff.Mode.SRC_IN); 

(Вызов setColorFilter(null) окрашивать его к нормальному)

Если вы хотите более сложный код , посмотрите исходный код «FOSDEM Companion»:

  • main.xml (макет, содержащий пользовательское меню в розыгрыше эр макет)
  • MainActivity.java (реализует логику меню)
  • AdapterLinearLayout.java (пользовательские LinearLayout заполнены пункты меню с помощью адаптера)
+0

так, что я должен делать и как поставить фоновое изображение вместо белого навигация? –

+0

Вы можете использовать LinearLayout, который содержит 'ImageView' например. – BladeCoder

+0

не могли бы вы предоставить мне код? –

Смежные вопросы