Improve: Collapse App bar on search

This commit is contained in:
LooKeR 2021-10-25 15:35:18 +05:30
parent 44d3409dfe
commit 343a125c7c

View File

@ -18,6 +18,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2 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.imageview.ShapeableImageView
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
@ -111,24 +113,30 @@ class TabsFragment : ScreenFragment() {
// Move focus from SearchView to Toolbar // Move focus from SearchView to Toolbar
toolbar.isFocusableInTouchMode = true toolbar.isFocusableInTouchMode = true
val searchView = FocusSearchView(toolbar.context) val searchView = FocusSearchView(toolbar.context).apply {
searchView.allowFocus = savedInstanceState?.getBoolean(STATE_SEARCH_FOCUSED) == true setOnSearchClickListener {
searchView.maxWidth = Int.MAX_VALUE ((toolbar.parent as CollapsingToolbarLayout).parent as AppBarLayout).setExpanded(
searchView.queryHint = getString(R.string.search) false,
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { true
override fun onQueryTextSubmit(query: String?): Boolean { )
searchView.clearFocus()
return true
} }
maxWidth = Int.MAX_VALUE
override fun onQueryTextChange(newText: String?): Boolean { queryHint = getString(R.string.search)
if (isResumed) { setOnQueryTextListener(object : SearchView.OnQueryTextListener {
searchQuery = newText.orEmpty() override fun onQueryTextSubmit(query: String?): Boolean {
productFragments.forEach { it.setSearchQuery(newText.orEmpty()) } 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 { toolbar.menu.apply {
if (Android.sdk(28) && !Android.Device.isHuaweiEmui) { if (Android.sdk(28) && !Android.Device.isHuaweiEmui) {