当我单击选项菜单时,折叠工具栏上的滚动错误

时间:2019-05-18 19:14:42

标签: java android xml android-layout android-optionsmenu

我创建了一个配置文件页面,其中协调器布局作为根元素和折叠的工具栏,其内部图像视图作为配置文件图片。该应用程序的第一个视图仅显示信息,到目前为止一切正常!当折叠的工具栏完全折叠或展开时,即使选项菜单也能很好地工作。但是当折叠的工具栏稍微折叠或稍微展开时,问题就出现了!您可以在屏幕截图中看到一些奇怪的事情!

单击选项菜单时,一些视图变为可见状态,而某些视图又变为旋转状态,并且选项菜单本身替换为另一个菜单项,这将取消视图的最新更改。选项菜单的两个项目都存在上述问题!

before options menu clicked

after options menu clicked

after options menu clicked

myprofile.xml

<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mp_coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:background="@color/semi_white"
android:fitsSystemWindows="true"
tools:context=".MyProfile">


<android.support.design.widget.AppBarLayout
    android:id="@+id/mp_app_bar"
    android:layout_width="match_parent"
    android:layout_height="256dp"
    android:elevation="4dp"
    android:fitsSystemWindows="true"
    app:theme="@style/ThemeOverlay.AppCompat.Light">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/mp_collapsing"

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        app:contentScrim="@color/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:theme="@style/ThemeOverlay.AppCompat.Dark">


        <ImageView
            android:src="@drawable/user_default"
            android:id="@+id/mp_iv_profile"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            app:layout_collapseMode="parallax" />

        <android.support.v7.widget.Toolbar
            android:id="@+id/mp_toolbar"
            android:layout_width="match_parent"
            android:layout_height="?android:attr/actionBarSize"
            app:layout_collapseMode="pin"
            android:fitsSystemWindows="false"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        <TextView
            style="@style/ToolbarsTv"
            android:id="@+id/mp_tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="16dp"
            app:layout_collapseMode="pin" />


    </android.support.design.widget.CollapsingToolbarLayout>


</android.support.design.widget.AppBarLayout>


<include layout="@layout/content_scrolling"/>

在选择的选项上

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch (id) {

        case android.R.id.home:
            onBackPressed();
            break;
        case R.id.mp_options_menu_edit:
            mp_btn_save.setVisibility(View.VISIBLE);
            item_edit.setVisible(false);
            item_cancel.setVisible(true);

            onEdit();
            break;
        case R.id.mp_options_menu_cancel:
            mp_btn_save.setVisibility(View.GONE);
            item_edit.setVisible(true);
            item_cancel.setVisible(false);
            onCancelEdit();

            break;
    }
    return super.onOptionsItemSelected(item);
}

1 个答案:

答案 0 :(得分:0)

问题是在一种布局中使用了两种东西,一种是协调器布局属性android:animateLayoutChanges="true",另一种是视图属性app:layout_behavior="@string/bottom_sheet_behavior"