как скрыть индикатор ящика навигации при использовании appcompat21

Я использую виджет панели инструментов в качестве панели действий, следуя руководству Cris Banes. В моем случае мне нужно было скрыть панель навигации в действии при переходе к другому фрагменту, содержащемуся внутри ViewPager. Раньше я использовал следующие свойства при использовании виджета ActionBar, чтобы скрыть навигационный ящик. Это, казалось, работало правильно. getActionBar().setDisplayHomeAsUpEnabled(false); getActionBar().setHomeButtonEnabled(false);

хотя теперь меняется на AppCompat21 при использовании

getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setHomeButtonEnabled(false);

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


person harshitpthk    schedule 02.03.2015    source источник


Ответы (3)


toolbar.setNavigationIcon(null);

Он скроет значок навигации, для справки вы можете проверить этот ответ

person RobinHood    schedule 02.03.2015
comment
Спасибо, похоже, значок навигации скрыт, но я не использую собственный значок для setIcon. Итак, как мне вернуть индикатор ящика навигации. - person harshitpthk; 02.03.2015
comment
спасибо, он работает с toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha)); - person harshitpthk; 02.03.2015

Если вы используете Toolbar внутри DrawerLayout --> AppBarLayout

затем класс

ActionBarDrawerToggle-->setDrawerIndicatorEnabled(false) 

Функция сделает значок ящика навигации невидимым.

public class MainActivity extends AppCompatActivity
                implements NavigationView.OnNavigationItemSelectedListener
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
//the below line of code will allow you to hide the nav drawer icon 
        toggle.setDrawerIndicatorEnabled(false);    
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }
person Naval Kishor Jha    schedule 16.08.2017
comment
Когда я пытаюсь это сделать, вместо значка гамбургера (3 строки) отображается значок со стрелкой назад. :-( - person ban-geoengineering; 23.09.2017
comment
... упс. Это происходило потому, что у меня все еще был actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true); . Удалите их, и теперь он работает хорошо. 10 баллов! :-) - person ban-geoengineering; 23.09.2017

ваш код должен работать только тогда, когда вы используете:

getSupportActionBar().setDisplayHomeAsUpEnabled(false);

а также

getSupportActionBar().setHomeButtonEnabled(false);

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

toolbar.setNavigationIcon(null);
person Stoycho Andreev    schedule 02.03.2015
comment
спасибо toolbar.setNavi .. кажется, скрывает это, хотя для отображения обратно мне пришлось использовать. toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha)); - person harshitpthk; 02.03.2015
comment
@harshitpthk Я ненавижу прибегать к таким хакерским решениям, но иногда ничего не поделаешь. - person lasec0203; 24.08.2019
comment
Просто примечание для интернет-путешественников, которые могут прийти после... важно, чтобы вы использовали getSupportActionBar(), а НЕ getActionBar() ???? - person Jonathan; 06.12.2019