在片段中使用协调器布局时布局不会完全消失
Layout not disappearing completely when using coordinator Layout in fragment
我正在尝试在片段中使用协调器布局和 AppBarLayout。我的目标是 header 滚动时可以隐藏,但要保留 activity 内的标题栏,这是其他片段所必需的。
我的问题是,当我向下滚动时,header 没有完全隐藏。有一个部分的状态栏高度仍然可见。不知道怎么让它完全消失
这里有一些屏幕截图以使其更易于理解:
header fully displayed
scrolled down
布局如下xml:
<?xml version="1.0" encoding="utf-8"?>
<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"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_dark"
android:fitsSystemWindows="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="@dimen/general_padding"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:fitsSystemWindows="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="25dp"
android:layout_marginTop="100dp"
android:layout_margin="@dimen/general_padding"
android:background="@android:color/holo_green_light"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>
以及使用此布局的片段中的 onCreateView() 方法:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_tabs, container, false);
mUnbinder = ButterKnife.bind(this, view);
mTabsPresenter.subscribe(this);
TabsPagerAdapter adapter = new TabsPagerAdapter(getChildFragmentManager());
mPager.setAdapter(adapter);
mTabs.setupWithViewPager(mPager);
mTabs.getTabAt(0).setText("_Maintenance");
mTabs.getTabAt(1).setText("_History");
mTabs.getTabAt(2).setText("_Costs");
setHasOptionsMenu(true);
return view;
}
有人可以帮我解决这个问题吗?
谢谢
请尝试在您的表格布局中使用 "layout_marginTop=-8dp"。一个简单的解决方法。
我正在尝试在片段中使用协调器布局和 AppBarLayout。我的目标是 header 滚动时可以隐藏,但要保留 activity 内的标题栏,这是其他片段所必需的。
我的问题是,当我向下滚动时,header 没有完全隐藏。有一个部分的状态栏高度仍然可见。不知道怎么让它完全消失
这里有一些屏幕截图以使其更易于理解:
header fully displayed
scrolled down
布局如下xml:
<?xml version="1.0" encoding="utf-8"?>
<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"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_dark"
android:fitsSystemWindows="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="@dimen/general_padding"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:fitsSystemWindows="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="25dp"
android:layout_marginTop="100dp"
android:layout_margin="@dimen/general_padding"
android:background="@android:color/holo_green_light"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>
以及使用此布局的片段中的 onCreateView() 方法:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_tabs, container, false);
mUnbinder = ButterKnife.bind(this, view);
mTabsPresenter.subscribe(this);
TabsPagerAdapter adapter = new TabsPagerAdapter(getChildFragmentManager());
mPager.setAdapter(adapter);
mTabs.setupWithViewPager(mPager);
mTabs.getTabAt(0).setText("_Maintenance");
mTabs.getTabAt(1).setText("_History");
mTabs.getTabAt(2).setText("_Costs");
setHasOptionsMenu(true);
return view;
}
有人可以帮我解决这个问题吗?
谢谢
请尝试在您的表格布局中使用 "layout_marginTop=-8dp"。一个简单的解决方法。