2017-01-16 29 views
1

все. Можно ли сделать Navigation View прозрачным? У меня есть пользовательский макет и попытка установить 50% прозрачный фон для этого макета, Navigation View или Drawer Layout.Android Навигация Прозрачность

android:background="#80000000" 

, но это не дает ожидаемого результата.

Кто-нибудь пытался это сделать? Я был бы признателен за помощь.

ответ

5

вы можете попробовать:

navigationView.getBackground().setAlpha(122); 

Здесь вы можете установить непрозрачность между 0 (полностью прозрачный) до 255 (полностью непрозрачный).

вы также можете использовать значение XML alpha, которое принимает двойные значения.

Диапазон от 0f до 1f (включительно), 0f быть прозрачным и 1f быть непрозрачным:

android:alpha="0.0" невидимы

android:alpha="0.5" сквозной

android:alpha="1.0" полный видимый

1

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

final Window window = getWindow(); 
    ObjectAnimator animator = ObjectAnimator.ofInt(window, 
      "navigationBarColor", window.getNavigationBarColor(), Color.TRANSPARENT); 
    animator.setEvaluator(new ArgbEvaluator()); 
    animator.setDuration(0); 
    animator.start(); 
+0

'#getNavigationBarColor()' требует API 21 –

4

Если вы хотите прозрачности с цветом попробовать это ..

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
View headerView = navigationView.getHeaderView(0); 
------ 
// you can even change only one from above to and keep the other one normally 
     navigationView.getBackground().setColorFilter(0x80000000, PorterDuff.Mode.MULTIPLY); 
     headerView.getBackground().setColorFilter(0x80000000, PorterDuff.Mode.MULTIPLY); 

Выход:

enter image description hereenter image description here

Если вам нужно больше deatals о том, какие цветовые коды Вы можете применить проверить мой ответ here


Или, если вы хотите установить альфа использовать navigationView.getBackground().setAlpha(intNumberTill256);

пс Nav headder темный цвет из-за его цвет фона, который я дал в XML

+0

Great , +1 ..! Также как лучший пользователь в теге * Android *, можете ли вы ответить на этот короткий вопрос? Должен ли я иметь один публичный метод static void main() {} 'для каждого из них ** class ** или ** file ** или ** project **? – stack

+2

@stack хорошо, я бы сказал, что это так: Сначала зачем нужен такой метод? Тогда, если вы считаете, что это должен быть способ начать метод fiest в классе в android..No..In ** основных программах Java **, нам нужен метод 'main()', потому что при выполнении байтового кода JVM будет найдите метод 'main()' в классе и начните выполнение там. В случае ** Android ** в каждом пакете есть манифест. Точка запуска указана в этом манифесте. Он запускает выполнение приложения из указанного метода класса 'onCreate()', поэтому нет необходимости в методе 'main()' –

+2

@stack, читаемом о жизненном цикле Android. Если вы есть какие-либо сомнения, отправьте комментарий в адрес http: // stackoverflow.ком/вопросы/8515936/андроид-активность-жизненный цикл, что-это-все-эта-метода, для –