diff --git a/app/src/main/java/org/koitharu/kotatsu/search/ui/widget/SearchBehavior.kt b/app/src/main/java/org/koitharu/kotatsu/search/ui/widget/SearchBehavior.kt new file mode 100644 index 000000000..ebd18fe81 --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/search/ui/widget/SearchBehavior.kt @@ -0,0 +1,54 @@ +package org.koitharu.kotatsu.search.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import android.widget.LinearLayout +import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.view.ViewCompat +import com.google.android.material.appbar.AppBarLayout +import com.google.android.material.bottomnavigation.BottomNavigationView + +class SearchBehavior(context: Context?, attrs: AttributeSet?) : + CoordinatorLayout.Behavior(context, attrs) { + + override fun layoutDependsOn( + parent: CoordinatorLayout, + child: SearchToolbar, + dependency: View, + ): Boolean { + return if (dependency is AppBarLayout) { + true + } else + if (dependency is LinearLayout || dependency is BottomNavigationView) { + dependency.z = child.z + 1 + true + } else { + super.layoutDependsOn(parent, child, dependency) + } + } + + override fun onDependentViewChanged( + parent: CoordinatorLayout, + child: SearchToolbar, + dependency: View, + ): Boolean { + if (dependency is AppBarLayout) { + child.translationY = dependency.getY() + return true + } + return super.onDependentViewChanged(parent, child, dependency) + } + + override fun onStartNestedScroll( + coordinatorLayout: CoordinatorLayout, + child: SearchToolbar, + directTargetChild: View, + target: View, + axes: Int, + type: Int, + ): Boolean { + return axes == ViewCompat.SCROLL_AXIS_VERTICAL + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/search/ui/widget/SearchEditText.kt b/app/src/main/java/org/koitharu/kotatsu/search/ui/widget/SearchEditText.kt new file mode 100644 index 000000000..677fac24e --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/search/ui/widget/SearchEditText.kt @@ -0,0 +1,30 @@ +package org.koitharu.kotatsu.search.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.KeyEvent +import androidx.annotation.AttrRes +import androidx.appcompat.widget.AppCompatEditText +import com.google.android.material.R + +class SearchEditText @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + @AttrRes defStyleAttr: Int = R.attr.editTextStyle, +) : AppCompatEditText(context, attrs, defStyleAttr) { + + override fun onKeyPreIme(keyCode: Int, event: KeyEvent): Boolean { + if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) { + if (hasFocus()) { + clearFocus() + return true + } + } + return super.onKeyPreIme(keyCode, event) + } + + override fun clearFocus() { + super.clearFocus() + text?.clear() + } +} \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/search/ui/widget/SearchToolbar.kt b/app/src/main/java/org/koitharu/kotatsu/search/ui/widget/SearchToolbar.kt new file mode 100644 index 000000000..b5a8729d4 --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/search/ui/widget/SearchToolbar.kt @@ -0,0 +1,24 @@ +package org.koitharu.kotatsu.search.ui.widget + +import android.content.Context +import android.graphics.Color +import android.util.AttributeSet +import androidx.annotation.AttrRes +import com.google.android.material.R +import com.google.android.material.appbar.MaterialToolbar +import com.google.android.material.shape.MaterialShapeDrawable + +class SearchToolbar @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + @AttrRes defStyleAttr: Int = R.attr.toolbarStyle, +) : MaterialToolbar(context, attrs, defStyleAttr) { + + private val bgDrawable = MaterialShapeDrawable(context, attrs, defStyleAttr, 0) + + init { + bgDrawable.initializeElevationOverlay(context) + bgDrawable.setShadowColor(Color.DKGRAY) + background = bgDrawable + } +} \ No newline at end of file