aboutsummaryrefslogtreecommitdiff
path: root/library/src/main/kotlin
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2017-06-26 16:51:57 -0700
committerAllan Wang <me@allanwang.ca>2017-06-26 16:51:57 -0700
commit92cb24af250e10ff60389a186bf692d7c17ed825 (patch)
tree329b1c2784211b8e880e8d2eb812181e1b46dd72 /library/src/main/kotlin
parentcc6d3f96af3bdcb65f34b53ce7749b1d73077068 (diff)
downloadkau-92cb24af250e10ff60389a186bf692d7c17ed825.tar.gz
kau-92cb24af250e10ff60389a186bf692d7c17ed825.tar.bz2
kau-92cb24af250e10ff60389a186bf692d7c17ed825.zip
Add search card with max height
Diffstat (limited to 'library/src/main/kotlin')
-rw-r--r--library/src/main/kotlin/ca/allanwang/kau/searchview/SearchCard.kt31
-rw-r--r--library/src/main/kotlin/ca/allanwang/kau/searchview/SearchView.kt11
2 files changed, 38 insertions, 4 deletions
diff --git a/library/src/main/kotlin/ca/allanwang/kau/searchview/SearchCard.kt b/library/src/main/kotlin/ca/allanwang/kau/searchview/SearchCard.kt
new file mode 100644
index 0000000..77da6b0
--- /dev/null
+++ b/library/src/main/kotlin/ca/allanwang/kau/searchview/SearchCard.kt
@@ -0,0 +1,31 @@
+package ca.allanwang.kau.searchview
+
+import android.content.Context
+import android.graphics.Rect
+import android.support.v7.widget.CardView
+import android.util.AttributeSet
+import android.view.ViewGroup
+
+/**
+ * Created by Allan Wang on 2017-06-26.
+ *
+ * CardView with a limited height
+ * Leaves space for users to tap to exit and ensures that all search items are visible
+ */
+class SearchCard @JvmOverloads constructor(
+ context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+) : CardView(context, attrs, defStyleAttr) {
+
+ val parentVisibleHeight: Int
+ get() {
+ val r = Rect()
+ (parent as ViewGroup).getWindowVisibleDisplayFrame(r)
+ return r.height()
+ }
+
+ override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
+ val trueHeightMeasureSpec = MeasureSpec.makeMeasureSpec((parentVisibleHeight * 0.9f).toInt(), MeasureSpec.AT_MOST)
+ super.onMeasure(widthMeasureSpec, trueHeightMeasureSpec)
+ }
+
+} \ No newline at end of file
diff --git a/library/src/main/kotlin/ca/allanwang/kau/searchview/SearchView.kt b/library/src/main/kotlin/ca/allanwang/kau/searchview/SearchView.kt
index c85450b..3b4afae 100644
--- a/library/src/main/kotlin/ca/allanwang/kau/searchview/SearchView.kt
+++ b/library/src/main/kotlin/ca/allanwang/kau/searchview/SearchView.kt
@@ -8,7 +8,10 @@ import android.support.annotation.ColorInt
import android.support.annotation.IdRes
import android.support.annotation.StringRes
import android.support.transition.AutoTransition
-import android.support.v7.widget.*
+import android.support.v7.widget.AppCompatEditText
+import android.support.v7.widget.LinearLayoutManager
+import android.support.v7.widget.RecyclerView
+import android.support.v7.widget.SimpleItemAnimator
import android.util.AttributeSet
import android.view.*
import android.widget.FrameLayout
@@ -154,7 +157,7 @@ class SearchView @JvmOverloads constructor(
val configs = Configs()
//views
private val shadow: View by bindView(R.id.search_shadow)
- private val card: CardView by bindView(R.id.search_cardview)
+ private val card: SearchCard by bindView(R.id.search_cardview)
private val iconNav: ImageView by bindView(R.id.search_nav)
private val editText: AppCompatEditText by bindView(R.id.search_edit_text)
val textEvents: Observable<String>
@@ -302,8 +305,8 @@ class SearchView @JvmOverloads constructor(
* The cardView matches the parent's width, so menuX is correct
*/
configs.openListener?.invoke(this)
+ editText.showKeyboard()
card.circularReveal(menuX, menuHalfHeight, duration = configs.revealDuration) {
- editText.showKeyboard()
cardTransition()
recycler.visible()
shadow.fadeIn()
@@ -312,7 +315,6 @@ class SearchView @JvmOverloads constructor(
fun revealClose() {
if (!isOpen) return
- editText.hideKeyboard()
shadow.fadeOut(duration = configs.transitionDuration)
cardTransition {
addEndListener {
@@ -325,6 +327,7 @@ class SearchView @JvmOverloads constructor(
}
}
recycler.gone()
+ editText.hideKeyboard()
}
}