我正在尝试从新发布的Android Design Support Library中实现CoordinatorLayout
,并且根据示例here在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/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways"/>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</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" />
但是,当我向下滚动视图时,操作栏不会隐藏。我无法弄清楚为什么这不起作用。
修改:据我所知,CoordinatorLayout
似乎无法与ListView/GridView/ScrollViews
一起使用,仅适用于RecyclerView
和NestedScrollView
。不幸的是,简单地切换到其中一个视图对我来说是不可能的,所以我仍在寻找解决方案。
答案 0 :(得分:6)
Currenlty并非所有观点都具有CoordinatorLayout
的预期行为。
您的视图应该实现NestedScrollView
接口,并且必须处理嵌套的滚动事件。
RecyclerView
和NestedScrollView
(版本22)支持此行为。
不过,您也可以使用AbsListView
(ListView
和GridView
),但只能使用API21 +。
只需添加以下内容:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
listView.setNestedScrollingEnabled(true);
}
答案 1 :(得分:4)
我认为您需要让>>> sample = 5
>>> for y in range(1, 5):
... print(y * (10 ** y - 1) // 9)
...
1
22
333
4444
实现ListView
和ScrollingView
接口。
这不是最简单的事情,但是如果你查看NestedScrollingChild
的源代码,你应该可以做到。它使用了RecyclerView
,您应该也可以这样做。
答案 2 :(得分:0)
这取决于您在ViewPager
中展示的内容。如果您使用list / recyclerview,它应该正确滚动。
答案 3 :(得分:0)
视图可以使用CoordinatorLayout.DefaultBehavior(YourView.Behavior.class)注释声明默认行为,或者使用app在布局文件中设置它:layout_behavior =“com.example.app.YourView $ Behavior”属性。该框架使任何视图都可以与CoordinatorLayout集成。
所以我认为这里的解决方案是覆盖AppBarLayout.Behavior类
答案 4 :(得分:-1)