代码之家  ›  专栏  ›  技术社区  ›  DaxHR

Android可折叠工具栏菜单图标消失

  •  2
  • DaxHR  · 技术社区  · 10 年前

    因此,我在我的应用程序中实现了可折叠工具栏,并在Java类中重写了onCreateOptionsMenu和onOptionsItemSelected,如下所示:

     @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_details, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_share:
                    break;
                case R.id.action_addToFavorites:
                    break;
            }
            return super.onOptionsItemSelected(item);
        }
    

    现在,当我打开活动时,我可以看到菜单图标并对其进行处理,直到工具栏被覆盖为止。当用户浏览工具栏时,图标消失。

    第二个问题,使用 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 方法我得到黑色而不是白色的按钮,所以现在我使用这个方法:

    tToolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_navigation_arrow_back));
    

    我对这个问题的问题是如何处理这个导航图标的单击事件?当工具栏发生折叠并留下左侧空白时,此图标也会消失,但它不是。

    这是我的代码:

    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.darioradecic.topmusicandartists.Details">
    
    
        <android.support.design.widget.AppBarLayout
            android:id="@+id/MyAppbar"
            android:layout_width="match_parent"
            android:layout_height="256dp"
            android:fitsSystemWindows="true">
    
            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/collapse_toolbar"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                app:contentScrim="@color/colorPrimary"
                app:layout_scrollFlags="scroll|exitUntilCollapsed">
    
                <com.android.volley.toolbox.NetworkImageView
                    android:id="@+id/imageViewDetailsTopGlobalSongs"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:fitsSystemWindows="true"
                    android:scaleType="centerCrop"
                    app:layout_collapseMode="pin" />
    
                <android.support.v7.widget.Toolbar
                    android:id="@+id/tToolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
    
                    />
            </android.support.design.widget.CollapsingToolbarLayout>
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="fill_vertical"
            android:padding="10dp"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
    

    我做错了什么?

    1 回复  |  直到 10 年前
        1
  •  5
  •   GuilhE    8 年前

    您是否使用旧版本的Support Library(23.0.1)?如果是,那么看看图标在最新版本中是否没有消失。

    要使用白色后退按钮,请将其添加到style.xml

    <style name="MyToolbarLight" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorControlNormal">@color/white</item>
    </style>
    

    然后在布局xml中添加样式。

    <android.support.v7.widget.Toolbar
    android:id="@+id/tToolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:theme="@style/MyToolbarLight"
    />
    

    你的图标正在消失,因为你没有为工具栏设置折叠模式,所以当你开始滚动时它不会保持固定,简单地把这个添加到你的工具栏:

     app:layout_collapseMode="pin"
    

    注: 如果包含工具栏布局,则必须指定(或重复)宽度和高度值,collapseMode不够:

    <include layout="@layout/view_toolbar"
             android:layout_width="match_parent"
             android:layout_height="?attr/actionBarSize"
             app:layout_collapseMode="pin"/>