Skip to content

Commit

Permalink
Add md_ripple_color theme attribute, resolves #1671
Browse files Browse the repository at this point in the history
  • Loading branch information
afollestad committed Dec 19, 2018
1 parent 5615ff7 commit cf49a54
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ import com.afollestad.materialdialogs.WhichButton.POSITIVE
import com.afollestad.materialdialogs.actions.hasActionButtons
import com.afollestad.materialdialogs.actions.setActionButtonEnabled
import com.afollestad.materialdialogs.color.utils.setVisibleOrGone
import com.afollestad.materialdialogs.list.getItemSelector
import com.afollestad.materialdialogs.utils.MDUtil.isColorDark
import com.afollestad.materialdialogs.utils.MDUtil.resolveColor
import com.afollestad.materialdialogs.utils.MDUtil.resolveDrawable

internal class ColorGridViewHolder(
itemView: View,
Expand Down Expand Up @@ -163,7 +163,7 @@ internal class ColorGridAdapter(
else R.layout.md_color_grid_item
val view = LayoutInflater.from(parent.context)
.inflate(layoutRes, parent, false)
view.background = resolveDrawable(dialog.context, attr = R.attr.md_item_selector)
view.background = dialog.getItemSelector()
return ColorGridViewHolder(view, this)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
package com.afollestad.materialdialogs.internal.button

import android.content.Context
import android.content.res.ColorStateList.valueOf
import android.graphics.drawable.RippleDrawable
import android.os.Build.VERSION.SDK_INT
import android.os.Build.VERSION_CODES.LOLLIPOP
import android.util.AttributeSet
import android.view.Gravity.CENTER
import androidx.annotation.ColorInt
Expand All @@ -24,9 +28,9 @@ import com.afollestad.materialdialogs.R
import com.afollestad.materialdialogs.R.attr
import com.afollestad.materialdialogs.Theme.Companion.inferTheme
import com.afollestad.materialdialogs.Theme.LIGHT
import com.afollestad.materialdialogs.utils.MDUtil.dimenPx
import com.afollestad.materialdialogs.utils.MDUtil.resolveColor
import com.afollestad.materialdialogs.utils.MDUtil.resolveDrawable
import com.afollestad.materialdialogs.utils.MDUtil.dimenPx
import com.afollestad.materialdialogs.utils.setGravityEndCompat
import com.afollestad.materialdialogs.utils.updatePadding

Expand Down Expand Up @@ -68,7 +72,14 @@ class DialogActionButton(

// Selector
val selectorAttr = if (stacked) R.attr.md_item_selector else R.attr.md_button_selector
background = resolveDrawable(baseContext, attr = selectorAttr)
val bgDrawable = resolveDrawable(baseContext, attr = selectorAttr)
if (SDK_INT >= LOLLIPOP && bgDrawable is RippleDrawable) {
val rippleColor = resolveColor(context = baseContext, attr = R.attr.md_ripple_color)
if (rippleColor != 0) {
bgDrawable.setColor(valueOf(rippleColor))
}
}
background = bgDrawable

// Padding
val sidePadding = if (stacked) paddingStacked else paddingDefault
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,24 @@

package com.afollestad.materialdialogs.list

import android.content.res.ColorStateList.valueOf
import android.graphics.drawable.Drawable
import android.graphics.drawable.RippleDrawable
import android.os.Build.VERSION.SDK_INT
import android.os.Build.VERSION_CODES.LOLLIPOP
import androidx.annotation.ArrayRes
import androidx.annotation.CheckResult
import androidx.annotation.RestrictTo
import androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP
import androidx.recyclerview.widget.RecyclerView
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.R
import com.afollestad.materialdialogs.R.attr
import com.afollestad.materialdialogs.assertOneSet
import com.afollestad.materialdialogs.internal.list.PlainListDialogAdapter
import com.afollestad.materialdialogs.utils.MDUtil.resolveDrawable
import com.afollestad.materialdialogs.utils.getStringArray
import com.afollestad.materialdialogs.utils.resolveColor

/** Gets the RecyclerView for a list dialog, if there is one. */
@CheckResult fun MaterialDialog.getRecyclerView(): RecyclerView? {
Expand Down Expand Up @@ -89,5 +98,14 @@ import com.afollestad.materialdialogs.utils.getStringArray
)
}

internal fun MaterialDialog.getItemSelector() =
resolveDrawable(context = context, attr = attr.md_item_selector)
@RestrictTo(LIBRARY_GROUP)
fun MaterialDialog.getItemSelector(): Drawable? {
val drawable = resolveDrawable(context = context, attr = attr.md_item_selector)
if (SDK_INT >= LOLLIPOP && drawable is RippleDrawable) {
val rippleColor = resolveColor(attr = R.attr.md_ripple_color)
if (rippleColor != 0) {
drawable.setColor(valueOf(rippleColor))
}
}
return drawable
}
1 change: 1 addition & 0 deletions core/src/main/res-public/values/public.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<attr format="color" name="md_background_color"/>
<attr format="color" name="md_color_title"/>
<attr format="color" name="md_color_content"/>
<attr format="color" name="md_ripple_color"/>
<attr format="dimension" name="md_corner_radius"/>
<attr format="reference" name="md_font_title"/>
<attr format="reference" name="md_font_body"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ import com.afollestad.materialdialogs.files.utilext.hasParent
import com.afollestad.materialdialogs.files.utilext.jumpOverEmulated
import com.afollestad.materialdialogs.files.utilext.maybeSetTextColor
import com.afollestad.materialdialogs.files.utilext.setVisible
import com.afollestad.materialdialogs.list.getItemSelector
import com.afollestad.materialdialogs.utils.MDUtil.isColorDark
import com.afollestad.materialdialogs.utils.MDUtil.resolveColor
import com.afollestad.materialdialogs.utils.MDUtil.resolveDrawable
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.GlobalScope
Expand Down Expand Up @@ -173,7 +173,7 @@ internal class FileChooserAdapter(
): FileChooserViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.md_file_chooser_item, parent, false)
view.background = resolveDrawable(dialog.context, attr = R.attr.md_item_selector)
view.background = dialog.getItemSelector()

val viewHolder = FileChooserViewHolder(view, this)
viewHolder.nameView.maybeSetTextColor(dialog.windowContext, R.attr.md_color_content)
Expand Down
1 change: 1 addition & 0 deletions sample/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@
<color name="primary_custom">#26c6da</color>
<color name="primaryDark_custom">#0095a8</color>
<color name="accent_custom">#6ff9ff</color>
<color name="primary_custom_translucent">#4026c6da</color>

</resources>
1 change: 1 addition & 0 deletions sample/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<item name="md_font_title">@font/raleway_bold</item>
<item name="md_font_body">@font/raleway_medium</item>
<item name="md_font_button">@font/raleway_semibold</item>
<item name="md_ripple_color">@color/primary_custom_translucent</item>
</style>

<style name="SampleHeader" tools:ignore="NewApi">
Expand Down

0 comments on commit cf49a54

Please sign in to comment.