【问题标题】:SearchView inside Coordinator layout协调器布局内的 SearchView
【发布时间】:2017-04-13 07:04:09
【问题描述】:

我怎样才能实现以下布局设计,在向上滚动时我只需使用 searchview 获取视图:

1 ----

2------在向上滚动:

我尝试在布局中的某些位置放置视图,但 searchview 始终位于最顶部的区域,而不是位于主页徽标下方甚至不可见。

我当前没有任何搜索视图的布局是:

<?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:background="#CFD8DC"
android:fitsSystemWindows="true"
tools:context="com.example.svatts.my22.ScrollingActivity">

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/app_bar_height"
    android:fitsSystemWindows="true"
    android:theme="@style/AppTheme.AppBarOverlay">


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

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="56dp"
                app:layout_collapseMode="pin"

                app:popupTheme="@style/AppTheme.PopupOverlay">

            </android.support.v7.widget.Toolbar>


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

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

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

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

【问题讨论】:

  • 你能详细说明一下吗,我已经在 content_scrolling 中使用了nestedscrollview,它的目的是拥有app:layout_behavior=@string/appbar_scrolling_view_behaviour

标签: android layout android-coordinatorlayout


【解决方案1】:

将您的整个工具栏更改为以下内容并注意这一行:

app:layout_scrollFlags="scroll|enterAlways|snap"



<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways|snap">

然后在您的工具栏下添加带有 tabMode 的可滚动视图,如下所示:

<your.search.layout
        android:id="@+id/your_search_layout_id"
        android:layout_width="match_parent"
        android:layout_height="your_height"
        app:tabMode="scrollable"/>

并将以下布局添加到您要使用标签栏滚动的 content_scrolling

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

工作示例

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways|snap">

    </android.support.v7.widget.Toolbar>

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="scrollable"/>
</android.support.design.widget.AppBarLayout>


<android.support.v4.view.ViewPager
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

【讨论】:

  • 我刚试过这个,我用作搜索视图的editText出现在最顶部(就在状态栏下方),向上滚动它就会消失。
  • 添加了一个工作示例。使用以下 gradle 构建版本:compileSdkVersion 23 buildToolsVersion "23.0.3"
  • 我将使用我的工作代码发布答案,当我将 CollapsingToolbarLayout 的高度从 match_parent 更改为任何值时,问题得到解决,然后在工具栏下方添加了一个编辑文本。
【解决方案2】:

您可以将 NestedScrollViewAppBarLayout 一起用于此目的。为了更好的兼容性,请使用 EditText 而不是 SearchView

更多信息here

【讨论】:

    猜你喜欢
    • 2018-06-29
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2016-04-21
    • 2016-04-21
    • 1970-01-01
    相关资源
    最近更新 更多