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 @@ + + + + + +