невозможно изменить навигационный значок ящика - PullRequest
1 голос
/ 23 января 2020

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

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 голосов
/ 23 января 2020

Попробуйте следующим образом

Сначала создайте растровое изображение из 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, когда копируете это в свой класс)

надеюсь, что эта работа:)

0 голосов
/ 23 января 2020

Обычно вы можете установить как приведенный ниже фрагмент кода:

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

И если вы хотите добавить изображение c dunami из 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 изображения. если вам нужна помощь в этом, то дайте мне знать, сначала попробуйте приведенные выше фрагменты кода.

Попробуйте, это может вам помочь

0 голосов
/ 23 января 2020

Отправка моего ответа в 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);
            }
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...