android块折叠工具栏,半透明状态削减了一半工具栏

时间:2016-10-09 15:12:12

标签: android xamarin.android toolbar android-collapsingtoolbarlayout android-appbarlayout

我在折叠工具栏和背景图片时遇到问题。我希望我的背景图像在主页片段可见时与状态栏重叠,但我需要在每个其他片段处阻止折叠工具栏。

我在所有可能的组合中尝试了android:fitsSystemWindows="true",但没有工作。

当我设置样式v21时 <item name="android:windowTranslucentStatus">false</item>

我的应用看起来像这样: http://imgur.com/a/DrVoh

然后当我设置TranslucentStatus to true时,我在主片段中获得了所需的效果,但是在下面发布的屏幕上可以看到所有其他片段的工具栏。

当我折叠图像并转到任何其他片段时,会出现另一个问题,所有工具栏图标都会消失。问题可能是由于阻塞崩溃引起的,但我不确定,是否有人建议使用不同的方法来阻止其他片段的工具栏折叠,以便我可以对其进行测试?

http://imgur.com/a/eJw96

这是我的main.xml布局

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/mainContent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true">

<android.support.design.widget.AppBarLayout
    android:fitsSystemWindows="true"
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:elevation="0dp"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsingToolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <ImageView
          android:fitsSystemWindows="true"
            android:id="@+id/backdrop"
            android:layout_width="match_parent"
            android:layout_height="256dp"
            android:scaleType="centerCrop"
            android:src="@drawable/backdrop"
            app:layout_collapseMode="parallax" />

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

样式-V21

<style name="Theme.Ecologic" parent="Base.Theme.Ecologic">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/primaryDark</item>
<item name="android:windowTranslucentStatus">true</item>

我在堆栈中找到的简单代码用于启用/禁用其他片段的折叠工具栏

public void EnableCollapse()
{
    _backdrop.Visibility = ViewStates.Visible;
}

public void DisableCollapse()
{
    _backdrop.Visibility = ViewStates.Gone;
}

@SOLVED 几个小时后,我找到了解决方案。问题是由更改背景图像的可见性引起的。我修改了启用和禁用折叠方法,现在一切正常。我可以随时阻止工具栏扩展。

public void EnableCollapse()
    {
        _appBarLayout.SetExpanded(true, false);
        _appBarLayout.Activated = true;
        var lparams = (CoordinatorLayout.LayoutParams)_appBarLayout.LayoutParameters;
        var behavior = new AppBarLayout.Behavior();
        behavior.SetDragCallback(new MyDragCallBack(true));
        lparams.Behavior = behavior;
    }

    public void DisableCollapse(View view)
    {
        _appBarLayout.SetExpanded(false,false);
        _appBarLayout.Activated = false;
        var lparams = (CoordinatorLayout.LayoutParams) _appBarLayout.LayoutParameters;
        var behavior = new AppBarLayout.Behavior();
        behavior.SetDragCallback(new MyDragCallBack(false));
        lparams.Behavior = behavior;
        if (view != null)
        {
            ViewCompat.SetNestedScrollingEnabled(view, false);
        }
    }

    public class MyDragCallBack : AppBarLayout.Behavior.DragCallback
    {
        private readonly bool _enabled;

        public MyDragCallBack(bool enable)
        {
            _enabled = enable;
        }
        public override bool CanDrag(AppBarLayout p0)
        {
            return _enabled;
        }
    }

0 个答案:

没有答案