From 343a125c7c962f7f98d8f90f45125bcd44be7617 Mon Sep 17 00:00:00 2001 From: LooKeR Date: Mon, 25 Oct 2021 15:35:18 +0530 Subject: [PATCH] Improve: Collapse App bar on search --- .../looker/droidify/screen/TabsFragment.kt | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt b/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt index 4db6f18f..98a96bc6 100644 --- a/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt +++ b/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt @@ -18,6 +18,8 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2 +import com.google.android.material.appbar.AppBarLayout +import com.google.android.material.appbar.CollapsingToolbarLayout import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator @@ -111,24 +113,30 @@ class TabsFragment : ScreenFragment() { // Move focus from SearchView to Toolbar toolbar.isFocusableInTouchMode = true - val searchView = FocusSearchView(toolbar.context) - searchView.allowFocus = savedInstanceState?.getBoolean(STATE_SEARCH_FOCUSED) == true - searchView.maxWidth = Int.MAX_VALUE - searchView.queryHint = getString(R.string.search) - searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { - override fun onQueryTextSubmit(query: String?): Boolean { - searchView.clearFocus() - return true + val searchView = FocusSearchView(toolbar.context).apply { + setOnSearchClickListener { + ((toolbar.parent as CollapsingToolbarLayout).parent as AppBarLayout).setExpanded( + false, + true + ) } - - override fun onQueryTextChange(newText: String?): Boolean { - if (isResumed) { - searchQuery = newText.orEmpty() - productFragments.forEach { it.setSearchQuery(newText.orEmpty()) } + maxWidth = Int.MAX_VALUE + queryHint = getString(R.string.search) + setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String?): Boolean { + clearFocus() + return true } - return true - } - }) + + override fun onQueryTextChange(newText: String?): Boolean { + if (isResumed) { + searchQuery = newText.orEmpty() + productFragments.forEach { it.setSearchQuery(newText.orEmpty()) } + } + return true + } + }) + } toolbar.menu.apply { if (Android.sdk(28) && !Android.Device.isHuaweiEmui) {