我想制作搜索工具栏,无论滚动级别如何,都会向下滑动并在向上滑动时折叠.当我想将此工具栏的高度设置为搜索区域时遇到问题.在向下滑动它很好.但在向上滑动搜索图标仍然可见.
例如,如果我将AppBarLayout android:layout_height ="wrap_content"更改为100dp,则可以隐藏工具栏,但它看起来很糟糕,可能会导致不同分辨率出现问题.我想要实现的例子是在Play Market应用程序中搜索,它是如何在那里完成的?
<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"
tools:context="test.proekt101_test.MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay"
android:layout_height="wrap_content">
<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="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways|snap"
>
<SearchView
android:id="@+id/searchView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:layout_marginTop="30dp"
>
</SearchView>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud) android android-coordinatorlayout android-collapsingtoolbarlayout android-appbarlayout
我们来看两个字符串arraylists
List<String> namesListA = new ArrayList<>(/*50 000 strings*/);
List<String> namesListB = new ArrayList<>(/*400 000 strings*/);
Run Code Online (Sandbox Code Playgroud)
removeAll方法似乎无法正常工作.后:
namesListA.removeAll(namesListB);
Run Code Online (Sandbox Code Playgroud)
namesListA.size()仍然是50000.编辑:输入数据不正确,它实际上工作但需要很长时间.
我写了以下蛮力代码:
boolean match;
for (String stringA: namesListA)
{
match = false;
for (String stringB: namesListB)
{
if (stringA.equals(stringB))
{
match = true;
break;
}
}
if (!match)
{
finallist.add(stringA);
}
}
Run Code Online (Sandbox Code Playgroud)
但它需要8个小时才能完成.它有任何已知的有效搜索字符串算法?喜欢按字母顺序对字符串进行排序,然后逐字母或类似的搜索.