Spinner and EditText enhancements
This commit is contained in:
@@ -27,7 +27,7 @@ import org.koitharu.kotatsu.filter.ui.model.TagCatalogItem
|
||||
|
||||
@AndroidEntryPoint
|
||||
class TagsCatalogSheet : BaseAdaptiveSheet<SheetTagsBinding>(), OnListItemClickListener<TagCatalogItem>, TextWatcher,
|
||||
AdaptiveSheetCallback, View.OnClickListener, View.OnFocusChangeListener, TextView.OnEditorActionListener {
|
||||
AdaptiveSheetCallback, View.OnFocusChangeListener, TextView.OnEditorActionListener {
|
||||
|
||||
private val viewModel by viewModels<TagsCatalogViewModel>(
|
||||
extrasProducer = {
|
||||
@@ -50,7 +50,6 @@ class TagsCatalogSheet : BaseAdaptiveSheet<SheetTagsBinding>(), OnListItemClickL
|
||||
binding.editSearch.addTextChangedListener(this)
|
||||
binding.editSearch.onFocusChangeListener = this
|
||||
binding.editSearch.setOnEditorActionListener(this)
|
||||
binding.buttonSearchClear.setOnClickListener(this)
|
||||
viewModel.content.observe(viewLifecycleOwner, adapter)
|
||||
addSheetCallback(this)
|
||||
disableFitToContents()
|
||||
@@ -61,12 +60,6 @@ class TagsCatalogSheet : BaseAdaptiveSheet<SheetTagsBinding>(), OnListItemClickL
|
||||
filter.setTag(item.tag, !item.isChecked)
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
when (v.id) {
|
||||
R.id.button_search_clear -> viewBinding?.editSearch?.text?.clear()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFocusChange(v: View?, hasFocus: Boolean) {
|
||||
setExpanded(
|
||||
isExpanded = hasFocus || isExpanded,
|
||||
@@ -90,7 +83,6 @@ class TagsCatalogSheet : BaseAdaptiveSheet<SheetTagsBinding>(), OnListItemClickL
|
||||
override fun afterTextChanged(s: Editable?) {
|
||||
val q = s?.toString().orEmpty()
|
||||
viewModel.searchQuery.value = q
|
||||
viewBinding?.buttonSearchClear?.isVisible = q.isNotEmpty()
|
||||
}
|
||||
|
||||
override fun onStateChanged(sheet: View, newState: Int) {
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape>
|
||||
<solid android:color="?attr/colorSurfaceContainerHigh" />
|
||||
<corners android:radius="4dp" />
|
||||
</shape>
|
||||
</item>
|
||||
<item>
|
||||
<shape>
|
||||
<solid android:color="@color/m3_popupmenu_overlay_color" />
|
||||
<corners android:radius="4dp" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
||||
15
app/src/main/res/drawable/m3_spinner_popup_background.xml
Normal file
15
app/src/main/res/drawable/m3_spinner_popup_background.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape>
|
||||
<solid android:color="@color/kotatsu_surfaceContainerHighest" />
|
||||
<corners android:radius="4dp" />
|
||||
</shape>
|
||||
</item>
|
||||
<item>
|
||||
<shape>
|
||||
<solid android:color="@color/kotatsu_surfaceContainerHighest" />
|
||||
<corners android:radius="4dp" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
||||
@@ -38,23 +38,20 @@
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/card_order"
|
||||
style="?materialCardViewOutlinedStyle"
|
||||
style="?m3SpinnerStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="@dimen/margin_normal"
|
||||
android:visibility="gone"
|
||||
app:cardBackgroundColor="@color/m3_chip_background_color"
|
||||
app:shapeAppearance="?shapeAppearanceCornerMedium"
|
||||
app:strokeColor="@color/m3_button_outline_color_selector"
|
||||
app:strokeWidth="@dimen/m3_comp_outlined_button_outline_width"
|
||||
tools:visibility="visible">
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spinner_order"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?listPreferredItemHeightSmall" />
|
||||
android:layout_height="56dp"
|
||||
android:minHeight="?listPreferredItemHeightSmall"
|
||||
android:paddingHorizontal="8dp" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
@@ -72,23 +69,21 @@
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/card_locale"
|
||||
style="?materialCardViewOutlinedStyle"
|
||||
style="?m3SpinnerStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="@dimen/margin_normal"
|
||||
android:visibility="gone"
|
||||
app:cardBackgroundColor="@color/m3_chip_background_color"
|
||||
app:shapeAppearance="?shapeAppearanceCornerMedium"
|
||||
app:strokeColor="@color/m3_button_outline_color_selector"
|
||||
app:strokeWidth="@dimen/m3_comp_outlined_button_outline_width"
|
||||
tools:visibility="visible">
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spinner_locale"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?listPreferredItemHeightSmall" />
|
||||
android:layout_height="56dp"
|
||||
android:minHeight="?listPreferredItemHeightSmall"
|
||||
android:paddingHorizontal="8dp"
|
||||
android:popupBackground="@drawable/m3_spinner_popup_background" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
@@ -119,9 +114,14 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:paddingVertical="8dp"
|
||||
android:drawablePadding="16dp"
|
||||
android:paddingHorizontal="@dimen/margin_normal"
|
||||
android:gravity="center_vertical"
|
||||
android:textAppearance="?textAppearanceBodySmall"
|
||||
android:visibility="gone"
|
||||
app:drawableStartCompat="@drawable/ic_error_small"
|
||||
app:drawableTint="?attr/colorControlNormal"
|
||||
tools:text="@string/error_multiple_genres_not_supported"
|
||||
tools:visibility="visible" />
|
||||
|
||||
|
||||
@@ -113,22 +113,19 @@
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/card_order"
|
||||
style="?materialCardViewOutlinedStyle"
|
||||
style="?m3SpinnerStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="@dimen/margin_normal"
|
||||
android:visibility="gone"
|
||||
app:cardBackgroundColor="@color/m3_chip_background_color"
|
||||
app:shapeAppearance="?shapeAppearanceCornerMedium"
|
||||
app:strokeColor="@color/m3_button_outline_color_selector"
|
||||
app:strokeWidth="@dimen/m3_comp_outlined_button_outline_width"
|
||||
tools:visibility="visible">
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spinner_order"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="56dp"
|
||||
android:paddingHorizontal="8dp"
|
||||
android:minHeight="?listPreferredItemHeightSmall" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
@@ -15,38 +15,30 @@
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:title="@string/filter" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/edit_search"
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/text_input_layout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableStart="?android:actionModeWebSearchDrawable"
|
||||
android:drawablePadding="12dp"
|
||||
app:startIconDrawable="?android:actionModeWebSearchDrawable"
|
||||
app:endIconMode="clear_text"
|
||||
app:endIconDrawable="@drawable/abc_ic_clear_material"
|
||||
android:hint="@string/genres_search_hint"
|
||||
android:imeOptions="actionSearch|flagNoFullscreen"
|
||||
android:importantForAutofill="no"
|
||||
android:inputType="text"
|
||||
android:paddingHorizontal="6dp"
|
||||
android:singleLine="true"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/headerBar"
|
||||
tools:ignore="LabelFor" />
|
||||
app:layout_constraintBottom_toTopOf="@id/recyclerView">
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/button_search_clear"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
android:contentDescription="@string/clear"
|
||||
android:minWidth="?minTouchTargetSize"
|
||||
android:minHeight="?minTouchTargetSize"
|
||||
android:src="@drawable/abc_ic_clear_material"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/edit_search"
|
||||
app:layout_constraintEnd_toEndOf="@id/edit_search"
|
||||
app:layout_constraintTop_toTopOf="@id/edit_search"
|
||||
tools:visibility="visible" />
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/edit_search"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:imeOptions="actionSearch|flagNoFullscreen"
|
||||
android:importantForAutofill="no"
|
||||
android:inputType="text"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<org.koitharu.kotatsu.core.ui.list.fastscroll.FastScrollRecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
@@ -59,7 +51,7 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/edit_search"
|
||||
app:layout_constraintTop_toBottomOf="@id/text_input_layout"
|
||||
app:scrollerOffset="8dp"
|
||||
tools:listitem="@layout/item_checkable_new" />
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<attr name="m3ColorExploreButton" />
|
||||
<attr name="m3ColorCardBackground" />
|
||||
<attr name="m3ColorBottomMenuBackground" />
|
||||
<attr name="m3SpinnerStyle" />
|
||||
|
||||
<!--CoverImageView attrs-->
|
||||
<declare-styleable name="CoverImageView">
|
||||
|
||||
@@ -58,6 +58,19 @@
|
||||
<item name="android:paddingBottom">0dp</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.Kotatsu.Spinner.DropDown" parent="Widget.AppCompat.Spinner.DropDown">
|
||||
<item name="android:popupBackground">@drawable/m3_spinner_popup_background</item>
|
||||
<item name="android:elevation">8dp</item>
|
||||
<item name="android:popupElevation">3dp</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.Kotatsu.Material3.Spinner" parent="Widget.Material3.CardView.Outlined">
|
||||
<item name="cardBackgroundColor">@android:color/transparent</item>
|
||||
<item name="strokeWidth">2dp</item>
|
||||
<item name="strokeColor">?attr/colorOutline</item>
|
||||
<item name="cardCornerRadius">4dp</item>
|
||||
</style>
|
||||
|
||||
<style name="ShapeAppearanceOverlay.Kotatsu.BottomSheet" parent="">
|
||||
<item name="cornerFamily">rounded</item>
|
||||
<item name="cornerSizeTopRight">@dimen/bottom_sheet_corner_radius</item>
|
||||
|
||||
@@ -94,6 +94,8 @@
|
||||
<item name="linearProgressIndicatorStyle">@style/Widget.Kotatsu.LinearProgressIndicator
|
||||
</item>
|
||||
<item name="bottomSheetDragHandleStyle">@style/Widget.Kotatsu.BottomSheet.DragHandle</item>
|
||||
<item name="android:dropDownSpinnerStyle">@style/Widget.Kotatsu.Spinner.DropDown</item>
|
||||
<item name="m3SpinnerStyle">@style/Widget.Kotatsu.Material3.Spinner</item>
|
||||
|
||||
<!-- Text appearance -->
|
||||
<item name="actionMenuTextAppearance">@style/TextAppearance.Kotatsu.Menu</item>
|
||||
|
||||
Reference in New Issue
Block a user