我有一個問題,我需要能夠從我的操作欄上單擊徽標和backarrow +漢堡包/食客。當我的後臺沒有任何東西時,顯示漢堡圖標並打開我的左側抽屜(然後通過動畫將其更改爲箭頭以關閉抽屜)。如何使抽屜圖標和徽標兩個不同的按鈕在ActionBar
顯示圖標旁邊AppLogo:
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
我有ActionBarDrawerToggle
檢查,如果它的左被打開抽屜(因爲我有不能與漢堡圖標動畫干擾也對抽屜)。
ActionBarDrawerToggle
mDrawerListener = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_closed) {
//must override these methods to make only left drawer change the icon of drawer in the corner, when opened
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
if (drawerView.getId() == R.id.left_drawer) {
super.onDrawerSlide(drawerView, slideOffset);
}
}
@Override
public void onDrawerOpened(View drawerView) {
if (drawerView.getId() == R.id.left_drawer) {
super.onDrawerOpened(drawerView);
}
}
@Override
public void onDrawerClosed(View drawerView) {
if (drawerView.getId() == R.id.left_drawer) {
super.onDrawerClosed(drawerView);
}
}
};
drawerLayout.setDrawerListener(mDrawerListener);
當瀏覽防曬是可能的,該圖標改變到箭頭通過禁用指示器
onBackStackChanged()
@Override
public void onBackStackChanged() {
// disable drawer icon and leave backarrow icon if backstack not empty
boolean canBack = getSupportFragmentManager().getBackStackEntryCount() > 0;
if (canBack) {
mDrawerListener.setDrawerIndicatorEnabled(false);
} else {
mDrawerListener.setDrawerIndicatorEnabled(true);
}
}
在OnOptionsItemSelected()
我走關心左抽屜(右一個關閉)或導航回溯操作。
OnOptionsItemSelected()
public boolean onOptionsItemSelected(MenuItem item) {
Helper.dismissKeyboard(this);
switch (item.getItemId()) {
case android.R.id.home:
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
onSupportNavigateUp();
} else {
if (drawerLayout.isDrawerOpen(drawerSports)) {
drawerLayout.closeDrawer(drawerSports);
} else {
if (drawerLayout.isDrawerOpen(lvMyAccount)) {
drawerLayout.closeDrawer(lvMyAccount);
}
drawerLayout.openDrawer(drawerSports);
}
}
return true;
Styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" >
<item name="android:background">@color/blue</item>
<item name="background">@color/blue</item>
<item name="android:logo">@drawable/logo_marathon</item>
<item name="logo">@drawable/logo_marathon</item>
<item name="android:displayOptions">showHome|useLogo</item>
<item name="displayOptions">showHome|useLogo</item>
</style>
...
這不是我的項目,所以我可能不知道如何的一切配置,我不能如有必要,請對其進行任何重大更改,所以我需要將onClick方法添加到徽標,但我不知道如何。我試過<item name="onClick">customLogoClickMethod</item>
,但它沒有幫助。
謝謝,我會嘗試,但你可能是指'getActionBar()setCustomView至(v)'如果我使用自定義視圖與ImageView的是我的標誌,我可能不要。我需要DISPLAY_USE_LOGO,對嗎? –
它的工作原理!我只需從styles.xml中刪除DISPLAY_USE_LOGO和徽標標籤,並創建一個只有圖像視圖的佈局。再次感謝,我以前怎麼沒有想過這件事! –
不要擔心它發生! thanx到stackoverflow! – vaibhav