首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Android DrawerLayout左上角添加3行图标

如何在Android DrawerLayout左上角添加3行图标
EN

Stack Overflow用户
提问于 2017-01-19 18:23:42
回答 2查看 4.2K关注 0票数 3

我正在写新的应用程序,我想把我的drawerLayout图标的外观改为典型的3条水平线。如果我单击它,Icon应该会将其外观更改为箭头。现在我一直都有一个箭头图标。

打包pl.nieruchalski.scrumfamily;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import android.app.Activity;
import android.content.res.Configuration;
import android.os.PersistableBundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;

public class MainActivity extends Activity {

    private ActionBarDrawerToggle drawerToggle;
    private DrawerLayout drawerLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.openDrawer, R.string.closeDrawer);
        drawerLayout.addDrawerListener(drawerToggle);
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);
    }

    @Override
    public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onPostCreate(savedInstanceState, persistentState);
        drawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        drawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(drawerToggle.onOptionsItemSelected(item))
            return true;
        return super.onOptionsItemSelected(item);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-20 15:52:39

您重写了错误的onPostCreate()方法,因此drawerToggle.syncState();永远不会被调用,切换也不会将自己的图标放在ActionBar上。

您只需使用Bundle参数重写onPostCreate()方法,而不使用PersistableBundle参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    drawerToggle.syncState();
}
票数 0
EN

Stack Overflow用户

发布于 2017-01-19 18:42:27

onCreate()中试用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(false);
    drawerToggle.setDrawerIndicatorEnabled(false);
    drawerToggle.setHomeAsUpIndicator(R.drawable.ic_custom_drawer_icon); //set your horizontal line icon
    drawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
            if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
                drawerLayout.closeDrawer(GravityCompat.START); 
                drawerToggle.setHomeAsUpIndicator(R.drawable.ic_custom_drawer_icon); // drawer closed-reset icon
            } else {
                //open drawer
                drawerLayout.openDrawer(GravityCompat.START);
                drawerToggle.setHomeAsUpIndicator(R.drawable.ic_new_icon); // set your back icon
            }
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41749028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文