无法更改导航抽屉切换图标

时间:2020-01-23 06:23:24

标签: android android-layout android-fragments kotlin navigation-drawer

我正在尝试更改用于打开和关闭导航抽屉的切换按钮的抽屉图标。但是我所有的努力都失败了,但我没有成功。请帮助我。

val d = BitmapDrawable(this.getResources(), path) as Drawable

            toggle!!.setHomeAsUpIndicator(d)

            if (path != null && path != "") {
                Picasso.with(this)?.load(path.toString())?.placeholder(resources?.getDrawable(R.drawable.ic_add_a_photo_black_24dp))?.error(
                    resources.getDrawable(
                        android.R.drawable.ic_input_add
                    )
                )!!.into(userPhotoImv)
            }

3 个答案:

答案 0 :(得分:0)

在Java中发布我的答案可能会有所帮助。

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

设置切换文字。

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);
            }
        }
    });

答案 1 :(得分:0)

尝试这种方式

首先从url创建位图图像

try {
    URL url = new URL("http://....");
    Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch(IOException e) {
    System.out.println(e);
}

现在像这样初始化导航抽屉

 ActionBarDrawerToggle  toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawerLayout.addDrawerListener(toggle);
    toggle.syncState();

    navView.setNavigationItemSelectedListener(this);
    //change navigation icon
    toggle.setDrawerIndicatorEnabled(false);

    Drawable drawable = new BitmapDrawable(getResources(), bitmap);

    toggle.setHomeAsUpIndicator(drawable);

注意:这是Java工作代码,您需要在kotlin中进行更改(我认为您可以在类中复制它时将其直接转换为kotlin)

希望这项工作:)

答案 2 :(得分:0)

通常,您可以按照以下代码段进行设置:

        Toolbar chatbox_toolbar = findViewById(R.id.toolbar);
        chatbox_toolbar.setTitleTextColor(getResources().getColor(R.color.white));
        setSupportActionBar(chatbox_toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_back_arrow_gray);

如果您想从URL添加动态图像,请稍等,我会在这里更新

使用Glide库:

        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayUseLogoEnabled(true);

        Glide.with(this).asDrawable().load(YourImageUrl).into(new CustomTarget<Drawable>() {
        @Override
        public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
            getSupportActionBar().setLogo(resource);
        }
       @Override
       public void onLoadCleared(@Nullable Drawable placeholder) {
      }
});

使用Piccasso库:

final ActionBar MyActionBar = getSupportActionBar();
Picasso.with(this)
       .load(YourImageUrl)
       .into(new Target()
       {
           @Override
           public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from)
           {
               Drawable drawble = new BitmapDrawable(getResources(), bitmap);
               MyActionBar .setIcon(drawble);
               MyActionBar .setDisplayShowHomeEnabled(true);
               MyActionBar .setDisplayHomeAsUpEnabled(true);
           }

           @Override
           public void onBitmapFailed(Drawable errorDrawable)
           {
           }

           @Override
           public void onPrepareLoad(Drawable placeHolderDrawable)
           {
           }
       });   

如果未获得结果,则隐藏操作栏主页按钮,并在“自定义标题”工具栏中获取Imageview,然后使用Glide或piccaso从图像URL设置图像。如果您需要帮助,请先尝试上面的代码片段,再让我知道。

尝试一下可能对您有帮助