如何更改工具栏中的笨蛋图标?

时间:2016-07-30 11:55:05

标签: android toolbar drawer materialdrawer

我正在使用 mikepenz抽屉库,但我想用我自己的drawable图标更改默认的humburger图标和后退箭头图标。

我已多次尝试但我无法使用自己的图标更改图标。

任何人都可以帮助我吗?

new DrawerBuilder()
    .withActivity(this)
    .withTranslucentStatusBar(false)
    .withActionBarDrawerToggle(false)
    .withToolbar(toolbar)
    .addDrawerItems(
        //pass your items here
    )
    .build();

显示HUMBURGER ICON的代码:

getSupportActionBar().setDisplayHomeAsUpEnabled(false);
result.getActionBarDrawerToggle().setDrawerIndicatorEnabled(true);

以下是我发现的代码很多次,但我也尝试了这个但是它不起作用

Drawable upArrow = getResources().getDrawable(R.drawable.my_drawable);

        actionBar.setHomeAsUpIndicator(upArrow);
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeButtonEnabled(true); 

当我在搜索时,我也知道如果您在抽屉式制作器中传递工具栏,则无法更改图标,所以任何人都可以告诉我该怎么办?

4 个答案:

答案 0 :(得分:1)

我没有尝试使用该库,但请尝试以下操作:

ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            final Drawable upArrow = getResources().getDrawable(R.drawable.my_drawable);

            actionBar.setHomeAsUpIndicator(upArrow);
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setHomeButtonEnabled(true);
        }

答案 1 :(得分:1)

根据此link,您需要从withToolbar()中移除DrawerBuilder,然后您必须完全自行处理打开/关闭。

为此你可以做那样的事情

protected void onCreate(Bundle savedInstanceState) {
        ...
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(false);
        toggle.setDrawerIndicatorEnabled(false);
        toggle.setHomeAsUpIndicator(R.drawable.ic_custom_drawer_icon);
        ...
    }

此外,您还必须添加工具栏导航单击侦听器以侦听自定义抽屉图标上的单击事件。

protected void onCreate(Bundle savedInstanceState) {
        ...
        toggle.setToolbarNavigationClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
                if (drawer.isDrawerOpen(GravityCompat.START)) {
                    drawer.closeDrawer(GravityCompat.START);
                } else {
                    drawer.openDrawer(GravityCompat.START);
                }
            }
        });
        ...
    }

您可以根据需要动态更新图标

toggle.setHomeAsUpIndicator(R.drawable.ic_new_icon);

希望这会对你有所帮助。

答案 2 :(得分:0)

通过修改以下内容来尝试此操作:

 result.getActionBarDrawerToggle().setDrawerIndicatorEnabled(true);

 result.getActionBarDrawerToggle().setDrawerIndicatorEnabled(false);

此禁用库默认图标然后更改图标...

 getSupportActionBar().setHomeAsUpIndicator(R.drawable.my_drawable);

答案 3 :(得分:0)

private DrawerLayout drawerLayout;
private ActionBarDrawerToggle actionBarDrawerToggle;
Toolbar toolbar;
String Drawer_Open,Drawer_Close;

@Override

protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//set it button icon
getSuppotActionBar().setDisplayHomeAsUpEnabled(true);
//set it makes button Clickble
getSuppotActionBar().setHomeButtonEnabled(true);
//set your own icon by using this code
getSuppotActionBar().setHomeAsUpIndicator(R.drawable.my_icon);
drawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout);
actionBarDrawerToggle=new ActionBarDrawerToggle(this,drawerLayout,toolbar,Drawer_Open,Drawer_Close);
drawerLayout.serDrawerListener(actionBarDrawerToggle);
}

}

再次,你有任何问题请在这里咨询我.....,希望你能解决你的问题......