diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java
index d9789b248..68dad24df 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java
+++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java
@@ -555,7 +555,7 @@ public final class GalleryListScene extends SearchBarScene
FastScroller fastScroller = mContentLayout.getFastScroller();
mSearchLayout = (SearchLayout) ViewUtils.$$(mainLayout, R.id.search_layout);
mFabLayout = (FabLayout) ViewUtils.$$(mainLayout, R.id.fab_layout);
- mSearchFab = ViewUtils.$$(mainLayout, R.id.search_fab);
+ mSearchFab = ViewUtils.$$(container, R.id.search_fab);
ViewCompat.setWindowInsetsAnimationCallback(view, new WindowInsetsAnimationHelper(
WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_STOP,
mFabLayout,
@@ -606,6 +606,12 @@ public final class GalleryListScene extends SearchBarScene
int colorID = ResourcesKt.resolveColor(getTheme(), com.google.android.material.R.attr.colorOnSurface);
mActionFabDrawable = new AddDeleteDrawable(context, colorID);
mFabLayout.getPrimaryFab().setImageDrawable(mActionFabDrawable);
+ mSearchFab.setOnClickListener( (v) -> {
+ if (STATE_NORMAL != mState) {
+ onApplySearch();
+ hideSoftInput();
+ }
+ });
// Update list url builder
onUpdateUrlBuilder();
@@ -945,6 +951,18 @@ public final class GalleryListScene extends SearchBarScene
}
}
+ @Override
+ public void onSearchViewExpanded() {
+ super.onSearchViewExpanded();
+ selectSearchFab(true);
+ }
+
+ @Override
+ public void onSearchViewHidden() {
+ super.onSearchViewHidden();
+ if (mState == STATE_NORMAL) selectActionFab(true);
+ }
+
public boolean onItemLongClick(int position) {
final Context context = getContext();
final MainActivity activity = getMainActivity();
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt
index 7ed16115f..18b28f9fb 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt
@@ -9,6 +9,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
+import androidx.annotation.CallSuper
import androidx.core.widget.addTextChangedListener
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@@ -55,14 +56,27 @@ abstract class SearchBarScene : ToolbarScene() {
mRecyclerView?.adapter = mSuggestionAdapter
val layoutManager = LinearLayoutManager(context)
mRecyclerView?.layoutManager = layoutManager
- mSearchView?.addTransitionListener { _, _, _ ->
- (requireActivity() as StageActivity).updateBackPressCallBackStatus()
- updateSuggestions()
+ mSearchView?.addTransitionListener { _, _, newState ->
+ if (newState == SearchView.TransitionState.SHOWING)
+ onSearchViewExpanded()
+ else if (newState == SearchView.TransitionState.HIDING)
+ onSearchViewHidden()
}
val contentView = onCreateViewWithToolbar(inflater, view, savedInstanceState)
return view.apply { addView(contentView, 0) }
}
+ @CallSuper
+ open fun onSearchViewExpanded() {
+ (requireActivity() as StageActivity).updateBackPressCallBackStatus()
+ updateSuggestions()
+ }
+
+ @CallSuper
+ open fun onSearchViewHidden() {
+ (requireActivity() as StageActivity).updateBackPressCallBackStatus()
+ }
+
fun setSearchBarHint(hint: String?) {
(mToolbar as? SearchBar)?.hint = hint
}
@@ -91,7 +105,7 @@ abstract class SearchBarScene : ToolbarScene() {
onApplySearch = lambda
}
- private fun onApplySearch() {
+ fun onApplySearch() {
val query = mSearchView?.text.toString().trim()
if (!mAllowEmptySearch && query.isEmpty()) {
return
diff --git a/app/src/main/res/layout/scene_gallery_list.xml b/app/src/main/res/layout/scene_gallery_list.xml
index 7bc3e9ada..d74c3ec81 100644
--- a/app/src/main/res/layout/scene_gallery_list.xml
+++ b/app/src/main/res/layout/scene_gallery_list.xml
@@ -66,21 +66,4 @@
-
-
-
-
-
diff --git a/app/src/main/res/layout/scene_searchbar.xml b/app/src/main/res/layout/scene_searchbar.xml
index bf15509ea..b38510195 100644
--- a/app/src/main/res/layout/scene_searchbar.xml
+++ b/app/src/main/res/layout/scene_searchbar.xml
@@ -46,4 +46,22 @@
+
+
+
+
+
+