Androidのナビゲーションアイコン - 代わりにハンバーガーアイコンのプロフィール画像
私はピカソやそのような何かをロードすることができるいくつかのカスタムイメージにナビゲーション引き出しを開くハンバーガーのアイコンを変更する方法を見つけようとしています。上記の画像のように、Twitterが自分のプロフィール画像を置き換えて、前に持っていたハンバーガーアイコンを置き換えたのです。
私はここにこのようなものを見つけることができなかったし、それを行う方法についての手掛かりはありません。
誰かがサンプルを入手したり、それを行う方法に関するガイダンスがあれば、本当に感謝しています。
私の活動のコードの一部
EDIT:
ActivityMapsBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_maps);
...
setSupportActionBar(binding.mapsContent.toolbar);
getSupportActionBar().setTitle("");
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, binding.drawerLayout, binding.mapsContent.toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
binding.drawerLayout.addDrawerListener(toggle);
toggle.syncState();
binding.navView.setNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
if (binding.drawerLayout.isDrawerOpen(GravityCompat.START)) {
binding.drawerLayout.closeDrawer(GravityCompat.START);
} else if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, R.string.message_press_twice, Toast.LENGTH_SHORT).show();
new Handler().postDelayed(() -> doubleBackToExitPressedOnce = false, 2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.nav_profile:
break;
case R.id.nav_settings:
break;
}
binding.drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
EDIT 2 - このスレッドでは、ここでブルーノ・ピントの助けと少し後ANSWER
を見つけました研究の私はついにそれを働かせました。 Targetを作成し、ImageViewのタグをこのTargetとして設定する必要があります.Picassoで読み込むと、作成したImageViewが参照されます。ターゲットのコンストラクタの内部では、読み込んだビットマップでビューを置き換えます。
は、ここで私はそれをやった方法は次のとおりです。
private void changeImageDrawable(){
ImageView profileImage = (ImageView) binding.navView.getHeaderView(0).findViewById(R.id.iv_profile_image);
final Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
profileImage.setImageBitmap(bitmap);
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
binding.mapsContent.toolbar.setNavigationIcon(drawable);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
profileImage.setTag(target);
Picasso.with(this)
.load("YOUR_IMAGE_URL_HERE")
.placeholder(R.drawable.placeholder_profile)
.error(R.drawable.placeholder_profile)
.into(target);
}
は、おそらくあなたにもエラーが発生した場合に描画可能か、ビットマップビューに変更する必要があります。
私は可能な方法を知っているが、私はここであなたアクティビティコードを投稿し、あなたのコードを参照する必要があります。 –
レイアウトを作成し、それをActionBarとして使用することができます。だから、あなたが望むものを追加することができます。 –
@BrunoFerreira私はいくつかのコードで私の質問を編集しました –