【问题标题】:Navigation drawer: unable to show the back icon instead of hamburger icon on the toolbar in the children activities导航抽屉:无法在子活动的工具栏上显示后退图标而不是汉堡图标
【发布时间】:2016-05-31 14:05:07
【问题描述】:

我正在使用带有 v7 工具栏的 DrawerLayout,我想在主活动中显示汉堡图标,在子活动中显示后退图标。

我做不到,汉堡图标总是显示,在儿童活动中也是如此。

我已经搜索过了,但没有成功(如果我丢失了一些有用的问题,我深表歉意)。

这是 Android 清单:

<activity android:name=".activities.MainActivity"></activity>
<activity
  android:name=".activities.BuyActivity"
  android:windowSoftInputMode="adjustResize"
  android:parentActivityName=".activities.MainActivity">
  <meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value=".activities.MainActivity" />
</activity>

这是活动代码(BaseActivity 是父活动和子活动的超类):

public class BaseActivity extends AppCompatActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_buy);

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.app_name, R.string.app_name);
        drawerLayout.addDrawerListener(actionBarDrawerToggle);
        getSupportActionBar().setDisplayShowTitleEnabled(false);

        mNavigationDrawerFragment = (NavigationDrawerFragment)
        getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
        mTitle = getTitle();

        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
            R.id.navigation_drawer,
            (DrawerLayout) findViewById(R.id.drawer_layout));
    }

}

这是工具栏布局的一部分:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="?attr/actionBarSize"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:background="?attr/colorPrimary">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txtTitle"
        android:textColor="@android:color/white"
        android:text="@string/title_buy"
        android:textAppearance="@android:style/TextAppearance.Large" />
    <ImageView
        android:layout_width="@dimen/toolbar_image"
        android:layout_height="@dimen/toolbar_image"
        android:src="@drawable/done"
        android:background="@drawable/bg_border_white_l"
        android:layout_marginRight="@dimen/toolbar_margin_right"
        android:layout_marginEnd="@dimen/toolbar_margin_right"
        android:contentDescription="@string/app_name"
        android:layout_gravity="end"
        android:id="@+id/imgDone" />
</android.support.v7.widget.Toolbar>

我试过了:

  • 检查导入正确的android.support.v7.app.ActionBarDrawerToggle

我不知道我做错了什么。

【问题讨论】:

  • 如果子活动将有可以通过切换操作的抽屉,那么让它们一直显示后退箭头真的没有意义。
  • 很难确切地说出您要做什么,但这可能会有所帮助:stackoverflow.com/questions/34025331/…

标签: android navigation-drawer android-toolbar hamburger-menu


【解决方案1】:

在子活动中,您不应添加ActionBarDrawerToggle,因为这是设置汉堡图标的原因。将ActionBarDrawerToggle 移动到主要活动。

【讨论】:

  • 谢谢,这几乎解决了问题。我不得不将“setHomeAsUpIndicator”行放在主要活动中。
  • 非常感谢您,花了这么多时间试图解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
  • 2021-09-02
相关资源
最近更新 更多