Страницы

Поиск по вопросам

Показаны сообщения с ярлыком android-navigation-view. Показать все сообщения
Показаны сообщения с ярлыком android-navigation-view. Показать все сообщения

суббота, 11 января 2020 г.

Как сделать чтоб NavigationView не затеняла основной экран

#android #android_navigation_view


Добрый день.
При открытии NavigationView основной экран затеняется, можно ли как нибудь отключить
этот эффект?
    


Ответы

Ответ 1



Согласно en-SO надо так: mDrawerLayout.setScrimColor(getResources().getColor(android.R.color.transparent));

суббота, 21 декабря 2019 г.

Как в NavigationView в header установить текст?

#java #android #android_layout #android_navigation_drawer #android_navigation_view


У меня есть вот такой NavigationView 



Вот такой код:











и вот такой header:













Мне нужно в этот header в поле для имени user поставить его имя, а в поле для email
поставить соответственно email

Я понимаю, что все стандартно и нужно найти по id view с которым хочешь работать
и установить в него TextView. 

Но когда я нахожу view и ставлю text, то вылетает ошибка, что такого view еще нет.
Это логично т.к. NavigationView еще не открыт...

Так вот вопрос. Как отследить что NavigationView уже открыт и только после этого
устанавливать text в view?

Если я в onCreate() нахожу и устанавливаю текст

TextView tvName = (TextView) findViewById(R.id.tvName);
    TextView textEmail = (TextView) findViewById(R.id.textEmail);

    tvName.setText("test");
    textEmail.setText("test");


то получаю такую ошибку в строке tvName.setText("test");


  FATAL EXCEPTION: main
                                                                                
   Process: com.example.android.camera2basic, PID: 32152
                                                                                
   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.camera2basic/com.example.android.camera2basic.activities.MainActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)'
on a null object reference


Если применять такой подход, то ошибки нет, но текст остается таким как по умолчанию

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    RelativeLayout headerView = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.nav_header_mainsecond,
null);
    TextView tvName = (TextView) headerView.findViewById(R.id.tvName);
    TextView textEmail = (TextView) headerView.findViewById(R.id.textEmail);
    tvName.setText("name");
    textEmail.setText("email");

    


Ответы

Ответ 1



Вам надо: Получить NavigationView NavigationView nv = ...; Получить разметку его Header View header = nv.getHeaderView(0); Найти нужные поля и с ними что-то сделать TextView tv = (TextView)header.findViewById(...);

понедельник, 4 марта 2019 г.

Как сделать чтоб NavigationView не затеняла основной экран

Добрый день. При открытии NavigationView основной экран затеняется, можно ли как нибудь отключить этот эффект?


Ответ

Согласно en-SO надо так:
mDrawerLayout.setScrimColor(getResources().getColor(android.R.color.transparent));

понедельник, 12 ноября 2018 г.

Как в NavigationView в header установить текст?

У меня есть вот такой NavigationView

Вот такой код:




и вот такой header





Мне нужно в этот header в поле для имени user поставить его имя, а в поле для email поставить соответственно email
Я понимаю, что все стандартно и нужно найти по id view с которым хочешь работать и установить в него TextView.
Но когда я нахожу view и ставлю text, то вылетает ошибка, что такого view еще нет. Это логично т.к. NavigationView еще не открыт...
Так вот вопрос. Как отследить что NavigationView уже открыт и только после этого устанавливать text в view?
Если я в onCreate() нахожу и устанавливаю текст
TextView tvName = (TextView) findViewById(R.id.tvName); TextView textEmail = (TextView) findViewById(R.id.textEmail);
tvName.setText("test"); textEmail.setText("test");
то получаю такую ошибку в строке tvName.setText("test");
FATAL EXCEPTION: main Process: com.example.android.camera2basic, PID: 32152 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.camera2basic/com.example.android.camera2basic.activities.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
Если применять такой подход, то ошибки нет, но текст остается таким как по умолчанию
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); RelativeLayout headerView = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.nav_header_mainsecond, null); TextView tvName = (TextView) headerView.findViewById(R.id.tvName); TextView textEmail = (TextView) headerView.findViewById(R.id.textEmail); tvName.setText("name"); textEmail.setText("email");


Ответ

Вам надо:
Получить NavigationView
NavigationView nv = ...;
Получить разметку его Header
View header = nv.getHeaderView(0);
Найти нужные поля и с ними что-то сделать
TextView tv = (TextView)header.findViewById(...);