我正在尝试更改用于打开和关闭导航抽屉的切换按钮的抽屉图标。但是我所有的努力都失败了,但我没有成功。请帮助我。
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)
}
答案 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设置图像。如果您需要帮助,请先尝试上面的代码片段,再让我知道。
尝试一下可能对您有帮助