Add Dividers to ControllerActivity's RecyclerView

Dividers after titles were missing in `ControllerActivity` which made it look inconsistent with `SettingsActivity` which did have them. They have now been added by extending `DividerItemDecoration` to be drawn before any `ControllerHeaderItem`.
This commit is contained in:
PixelyIon 2021-11-11 20:19:30 +05:30
parent b230afcd35
commit 69ef93bfa8
5 changed files with 35 additions and 0 deletions

View File

@ -3,7 +3,17 @@
<component name="DesignSurface"> <component name="DesignSurface">
<option name="filePathToZoomLevelMap"> <option name="filePathToZoomLevelMap">
<map> <map>
<entry key="../../../../../layout/custom_preview.xml" value="0.16875" />
<entry key="app/src/main/res/drawable/logo_skyline.xml" value="0.152" />
<entry key="app/src/main/res/layout/app_dialog.xml" value="0.22335526315789472" />
<entry key="app/src/main/res/layout/button_dialog.xml" value="0.33" />
<entry key="app/src/main/res/layout/controller_activity.xml" value="0.22335526315789472" />
<entry key="app/src/main/res/layout/controller_header.xml" value="0.22335526315789472" />
<entry key="app/src/main/res/layout/header_rom_filter.xml" value="0.22335526315789472" />
<entry key="app/src/main/res/layout/license_dialog.xml" value="0.1" />
<entry key="app/src/main/res/layout/main_activity.xml" value="0.2028688524590164" /> <entry key="app/src/main/res/layout/main_activity.xml" value="0.2028688524590164" />
<entry key="app/src/main/res/layout/on_screen_edit_activity.xml" value="0.67" />
<entry key="app/src/main/res/layout/on_screen_edit_mini_fab.xml" value="0.22335526315789472" />
<entry key="app/src/main/res/layout/settings_activity.xml" value="0.22302631578947368" /> <entry key="app/src/main/res/layout/settings_activity.xml" value="0.22302631578947368" />
<entry key="app/src/main/res/menu/toolbar_log.xml" value="0.11019736842105263" /> <entry key="app/src/main/res/menu/toolbar_log.xml" value="0.11019736842105263" />
</map> </map>

View File

@ -52,6 +52,8 @@ class GenericAdapter : RecyclerView.Adapter<GenericViewHolder<ViewBinding>>(), F
override fun getItemCount() = currentItems.size override fun getItemCount() = currentItems.size
fun getFactoryViewType(factory : ViewBindingFactory) = viewTypesMapping.get(factory)
override fun getItemViewType(position : Int) = viewTypesMapping.getOrPut(currentItems[position].getViewBindingFactory()) { viewTypesMapping.size } override fun getItemViewType(position : Int) = viewTypesMapping.getOrPut(currentItems[position].getViewBindingFactory()) { viewTypesMapping.size }
fun setHeaderItems(items : List<GenericListItem<*>>) { fun setHeaderItems(items : List<GenericListItem<*>>) {

View File

@ -6,9 +6,12 @@
package emu.skyline.input package emu.skyline.input
import android.content.Intent import android.content.Intent
import android.graphics.Canvas
import android.os.Bundle import android.os.Bundle
import android.view.KeyEvent import android.view.KeyEvent
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.marginTop
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
@ -187,6 +190,24 @@ class ControllerActivity : AppCompatActivity() {
} }
}) })
val dividerItemDecoration = object : DividerItemDecoration(this, DividerItemDecoration.VERTICAL) {
override fun onDraw(canvas : Canvas, parent : RecyclerView, state : RecyclerView.State) {
val divider = drawable!!
for (i in 0 until parent.childCount) {
val view = parent.getChildAt(i)
if (parent.adapter!!.getItemViewType(parent.getChildAdapterPosition(view)) == adapter.getFactoryViewType(ControllerHeaderBindingFactory)) {
val bottom = view.top - view.marginTop
val top = bottom - divider.intrinsicHeight
divider.setBounds(0, top, parent.width, bottom)
divider.draw(canvas)
}
}
}
}
dividerItemDecoration.drawable.let { it?.setTint(getColor(R.color.dividerColor)); it }
binding.controllerList.addItemDecoration(dividerItemDecoration)
update() update()
} }

View File

@ -3,4 +3,5 @@
<color name="colorPrimary">#FF4285F4</color> <color name="colorPrimary">#FF4285F4</color>
<color name="backgroundColor">#FF121212</color> <color name="backgroundColor">#FF121212</color>
<color name="backgroundColorVariant">#323232</color> <color name="backgroundColorVariant">#323232</color>
<color name="dividerColor">@android:color/white</color>
</resources> </resources>

View File

@ -4,4 +4,5 @@
<color name="colorPrimary">#FF1E58F0</color> <color name="colorPrimary">#FF1E58F0</color>
<color name="backgroundColor">@android:color/white</color> <color name="backgroundColor">@android:color/white</color>
<color name="backgroundColorVariant">#F8F8F8</color> <color name="backgroundColorVariant">#F8F8F8</color>
<color name="dividerColor">@android:color/black</color>
</resources> </resources>