Skip to content

Instantly share code, notes, and snippets.

@vorobeij
Created April 17, 2018 11:52
Show Gist options
  • Select an option

  • Save vorobeij/86163470b0ba393c2ca20fc5a42ae65f to your computer and use it in GitHub Desktop.

Select an option

Save vorobeij/86163470b0ba393c2ca20fc5a42ae65f to your computer and use it in GitHub Desktop.
search view
<dimen name="sv_icon_size">40dp</dimen> <!-- height of all container -->
<dimen name="sv_icon_padding">8dp</dimen>
<dimen name="sv_text_padding">16dp</dimen>
<dimen name="sv_text_margin">16dp</dimen>
<dimen name="sv_text_size">12sp</dimen>
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import au.sj.owl.uimock.R
import com.jakewharton.rxbinding2.InitialValueObservable
import com.jakewharton.rxbinding2.view.RxView
import com.jakewharton.rxbinding2.widget.RxTextView
import io.reactivex.Observable
import kotlinx.android.synthetic.main.w_serchview.view.sv_filters
import kotlinx.android.synthetic.main.w_serchview.view.sv_search
import kotlinx.android.synthetic.main.w_serchview.view.sv_text
class SearchView : CompoundView {
var filterClicked: Observable<Any> = RxView.clicks(sv_filters)
var searchClicked: Observable<Any> = RxView.clicks(sv_search)
var textChanged: InitialValueObservable<CharSequence> = RxTextView.textChanges(sv_text)
/**
* ========================== constructors ==========================
*/
constructor(context: Context) : super(context)
constructor(context: Context,
attrs: AttributeSet) : super(context, attrs)
constructor(context: Context,
attrs: AttributeSet,
defStyleAttr: Int) : super(context, attrs, defStyleAttr)
/**
* ========================== init ==========================
*/
override fun loadAttrs(attrs: AttributeSet) {
}
override fun initLayout() {
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
inflater.inflate(R.layout.w_serchview, this)
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/sv_container"
android:layout_width="match_parent"
android:layout_height="@dimen/sv_icon_size">
<ImageView
android:id="@+id/sv_filters"
android:layout_width="@dimen/sv_icon_size"
android:layout_height="@dimen/sv_icon_size"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:padding="@dimen/sv_icon_padding"
android:src="@drawable/ic_filters"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/sv_text"
android:layout_width="0dp"
android:layout_height="@dimen/sv_icon_size"
android:layout_marginStart="@dimen/sv_text_margin"
android:gravity="center_vertical"
android:hint="@string/search_all_cafes_or_restaurants"
android:lines="1"
android:background="@android:color/transparent"
android:paddingBottom="0dp"
android:paddingEnd="@dimen/sv_text_padding"
android:paddingStart="@dimen/sv_text_padding"
android:textSize="16sp"
app:layout_constraintEnd_toStartOf="@id/sv_search"
app:layout_constraintStart_toEndOf="@id/sv_filters"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/sv_search"
android:layout_width="@dimen/sv_icon_size"
android:layout_height="@dimen/sv_icon_size"
android:layout_marginEnd="@dimen/activity_horizontal_margin"
android:padding="@dimen/sv_icon_padding"
android:src="@drawable/ic_search"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:layout_width="0dp"
android:layout_height="1px"
android:background="@color/colorTextSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent" />
</android.support.constraint.ConstraintLayout>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment