parent
0db1b7c143
commit
dbd3c733ba
@ -0,0 +1,89 @@ |
||||
package io.legado.app.ui.book.arrange |
||||
|
||||
import android.content.Context |
||||
import android.os.Bundle |
||||
import android.view.View |
||||
import android.view.ViewGroup |
||||
import androidx.appcompat.widget.SearchView |
||||
import androidx.recyclerview.widget.LinearLayoutManager |
||||
import io.legado.app.R |
||||
import io.legado.app.base.BaseDialogFragment |
||||
import io.legado.app.base.adapter.ItemViewHolder |
||||
import io.legado.app.base.adapter.RecyclerAdapter |
||||
import io.legado.app.data.entities.BookSource |
||||
import io.legado.app.databinding.DialogSourcePickerBinding |
||||
import io.legado.app.databinding.ItemTextBinding |
||||
import io.legado.app.lib.theme.primaryColor |
||||
import io.legado.app.lib.theme.primaryTextColor |
||||
import io.legado.app.utils.applyTint |
||||
import io.legado.app.utils.dpToPx |
||||
import io.legado.app.utils.setLayout |
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding |
||||
import splitties.views.rightPadding |
||||
|
||||
class SourcePickerDialog : BaseDialogFragment(R.layout.dialog_source_picker) { |
||||
|
||||
private val binding by viewBinding(DialogSourcePickerBinding::bind) |
||||
private val searchView: SearchView by lazy { |
||||
binding.toolBar.findViewById(R.id.search_view) |
||||
} |
||||
private val adapter by lazy { |
||||
SourceAdapter(requireContext()) |
||||
} |
||||
|
||||
override fun onStart() { |
||||
super.onStart() |
||||
setLayout(1f, ViewGroup.LayoutParams.MATCH_PARENT) |
||||
} |
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { |
||||
initView() |
||||
} |
||||
|
||||
private fun initView() { |
||||
binding.toolBar.setBackgroundColor(primaryColor) |
||||
binding.toolBar.title = "选择书源" |
||||
binding.toolBar.rightPadding = 16.dpToPx() |
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) |
||||
binding.recyclerView.adapter = adapter |
||||
searchView.applyTint(primaryTextColor) |
||||
searchView.onActionViewExpanded() |
||||
searchView.isSubmitButtonEnabled = true |
||||
searchView.queryHint = getString(R.string.search_book_source) |
||||
searchView.clearFocus() |
||||
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { |
||||
override fun onQueryTextSubmit(query: String?): Boolean { |
||||
return false |
||||
} |
||||
|
||||
override fun onQueryTextChange(newText: String?): Boolean { |
||||
|
||||
return false |
||||
} |
||||
}) |
||||
} |
||||
|
||||
|
||||
inner class SourceAdapter(context: Context) : |
||||
RecyclerAdapter<BookSource, ItemTextBinding>(context) { |
||||
|
||||
override fun getViewBinding(parent: ViewGroup): ItemTextBinding { |
||||
return ItemTextBinding.inflate(inflater, parent, false) |
||||
} |
||||
|
||||
override fun convert( |
||||
holder: ItemViewHolder, |
||||
binding: ItemTextBinding, |
||||
item: BookSource, |
||||
payloads: MutableList<Any> |
||||
) { |
||||
binding.textView.text = item.getDisPlayNameGroup() |
||||
} |
||||
|
||||
override fun registerListener(holder: ItemViewHolder, binding: ItemTextBinding) { |
||||
|
||||
} |
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,98 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:orientation="vertical"> |
||||
|
||||
<io.legado.app.ui.widget.TitleBar |
||||
android:id="@+id/tool_bar" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:theme="?attr/actionBarStyle" |
||||
app:attachToActivity="false" |
||||
app:contentLayout="@layout/view_search" |
||||
app:fitStatusBar="false" |
||||
app:popupTheme="@style/AppTheme.PopupOverlay" |
||||
app:titleTextAppearance="@style/ToolbarTitle" /> |
||||
|
||||
<FrameLayout |
||||
android:layout_width="match_parent" |
||||
android:layout_height="0dp" |
||||
android:layout_weight="1"> |
||||
|
||||
<io.legado.app.ui.widget.recycler.scroller.FastScrollRecyclerView |
||||
android:id="@+id/recycler_view" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:scrollbars="none" |
||||
tools:ignore="SpeakableTextPresentCheck" /> |
||||
|
||||
<io.legado.app.ui.widget.anima.RotateLoading |
||||
android:id="@+id/rotate_loading" |
||||
android:layout_width="36dp" |
||||
android:layout_height="36dp" |
||||
android:layout_gravity="center" |
||||
android:layout_margin="6dp" |
||||
android:visibility="gone" |
||||
app:loading_width="2dp" /> |
||||
|
||||
<TextView |
||||
android:id="@+id/tv_msg" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:layout_gravity="center" |
||||
android:padding="16dp" |
||||
android:textColor="@color/secondaryText" |
||||
android:visibility="gone" /> |
||||
|
||||
</FrameLayout> |
||||
|
||||
<com.google.android.flexbox.FlexboxLayout |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:paddingLeft="12dp" |
||||
android:paddingRight="12dp" |
||||
app:flexWrap="wrap" |
||||
app:justifyContent="space_between"> |
||||
|
||||
<io.legado.app.ui.widget.text.AccentTextView |
||||
android:id="@+id/tv_footer_left" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:padding="12dp" |
||||
android:visibility="gone" |
||||
tools:ignore="RtlHardcoded" /> |
||||
|
||||
<Space |
||||
android:layout_width="0dp" |
||||
android:layout_height="0dp" /> |
||||
|
||||
<LinearLayout |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:orientation="horizontal"> |
||||
|
||||
<io.legado.app.ui.widget.text.AccentTextView |
||||
android:id="@+id/tv_cancel" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:padding="12dp" |
||||
android:text="@string/cancel" |
||||
android:visibility="gone" |
||||
tools:ignore="RtlHardcoded" /> |
||||
|
||||
<io.legado.app.ui.widget.text.AccentTextView |
||||
android:id="@+id/tv_ok" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:padding="12dp" |
||||
android:text="@string/ok" |
||||
android:visibility="gone" |
||||
tools:ignore="RtlHardcoded" /> |
||||
|
||||
</LinearLayout> |
||||
|
||||
</com.google.android.flexbox.FlexboxLayout> |
||||
</LinearLayout> |
Loading…
Reference in new issue