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