0

Прежде чем написать эту тему, я попытался реализовать другое решение, которое я нашел в stackoverflow, но ничего не работает должным образом.Как изменить значок гамбургера в Android (NavigationDrawer)

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

Это мой код:

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

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     toolbar.setTitleTextColor(Color.parseColor("#009754")); 
     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.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

И это то, что я пытаюсь реализовать:

Это решение не работает:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
toolbar.setTitleTextColor(Color.parseColor("#009754")); 
toolbar.setNavigationIcon(R.drawable.ic_draw); 
setSupportActionBar(toolbar); 

Это решение не работает:

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(false); 
toggle.setDrawerIndicatorEnabled(false); 
toggle.setHomeAsUpIndicator(R.drawable.ic_custom_drawer_icon); 

Я не понимаю Tand почему я не могу изменить значок, я понятия не имею, в чем проблема ...

ответ

2

Простой и элегантный решение

Место

getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.drawable.dashboardicon); // ваш значок здесь

после

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); 
    toggle.syncState(); 

Общего решения в навигационной деятельности

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); 
    toggle.syncState(); 

    getSupportActionBar().setHomeButtonEnabled(true); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setHomeAsUpIndicator(R.drawable.dashboardicon); 

    navigationView= (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

Примечание: Оно не нуждается setNavigationOnClickListener()

1

Отключить индикатор ящика для ActionBarDrawerToggle:

toggle.setDrawerIndicatorEnabled(false); 

, а затем:

toolbar.setNavigationIcon(R.drawable. ic_custom_drawer_icon); 
+1

Затем добавить пользовательский слушатель путем вызова 'setNavigationOnClickListener()' на панели инструментов как указано [здесь] (https://stackoverflow.com/a/32695966/876267). – Mehmed

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