0

Twitter's ToolbarAndroid的導航圖標 - 檔案圖片,而不是漢堡包圖標

我試圖找到如何更改打開導航抽屜可裝載畢加索或者類似的東西,一些自定義圖像的漢堡包圖標。就像上面的圖片一樣,Twitter設法將我的個人資料圖片替換爲他們之前擁有的漢堡圖標。

我在這裏找不到像這樣的東西,我也不知道如何去做。

如果有人得到一個樣本或一些指導如何做到這一點,我會非常感激。

編輯

我的一些活動代碼:

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 - 找到了答案

布魯諾·平託的幫助在這裏,在這個線程和一點點後的研究我終於做到了。 您需要創建一個Target並將ImageView的標籤設置爲該Target,並且在加載畢加索時引用您創建的ImageView。在Tar​​get的構造函數中,你用加載的Bitmap替換你的視圖。

我是這樣做的:

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

你或許應該改變你在錯誤的情況下觀看繪製或位圖,以及。

+1

我知道一個可行的辦法,但我需要看到你的代碼,在這裏發表您的活動代碼。 –

+0

您可以創建佈局並將其用作ActionBar。所以你可以添加你想要的任何東西。 –

+0

@BrunoFerreira我用一些代碼編輯了我的問題 –

回答

1

您可以使用.setNavigationIcon()方法從工具欄

事情是這樣的:

((Toolbar) getSupportActionBar()).setNavigationIcon(YOUR_ICON);

+0

在** YOUR_ICON **中,我可以將一些自定義圖像加載到畢加索? –

+0

是的。可以是可繪製的,也可以是可繪製的本身。 –

+0

謝謝!我編輯了我的問題。隨着塔吉特和你的答案,我做到了。 –

相關問題