Add some widgets

This commit is contained in:
Koitharu
2021-06-28 15:41:39 +03:00
parent c9cf09f4dd
commit e5448fa8ab
3 changed files with 108 additions and 0 deletions

View File

@@ -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<SearchToolbar>(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
}
}

View File

@@ -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()
}
}

View File

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