提交 2f7c932f 编写于 作者: A Aidan Follestad

Add md_line_spacing_body attribute to set a global default line spacing for...

Add md_line_spacing_body attribute to set a global default line spacing for dialog messages. Resolves #1903.
上级 fe8e97de
......@@ -20,7 +20,9 @@ import android.text.method.LinkMovementMethod
import android.widget.TextView
import androidx.annotation.StringRes
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.R
import com.afollestad.materialdialogs.internal.message.LinkTransformationMethod
import com.afollestad.materialdialogs.utils.MDUtil.resolveFloat
import com.afollestad.materialdialogs.utils.MDUtil.resolveString
/** @author Aidan Follestad (@afollestad) */
......@@ -30,8 +32,10 @@ class DialogMessageSettings internal constructor(
val messageTextView: TextView
) {
private var isHtml: Boolean = false
private var didSetLineSpacing: Boolean = false
fun lineSpacing(multiplier: Float): DialogMessageSettings {
didSetLineSpacing = true
messageTextView.setLineSpacing(0f, multiplier)
return this
}
......@@ -49,6 +53,15 @@ class DialogMessageSettings internal constructor(
@StringRes res: Int?,
text: CharSequence?
) {
if (!didSetLineSpacing) {
lineSpacing(
resolveFloat(
context = dialog.windowContext,
attr = R.attr.md_line_spacing_body,
defaultValue = 1.1f
)
)
}
messageTextView.text = text.maybeWrapHtml(isHtml)
?: resolveString(dialog, res, html = isHtml)
}
......
......@@ -129,7 +129,7 @@ object MDUtil {
): IntArray {
val a = context.theme.obtainStyledAttributes(attrs)
try {
return (0 until attrs.size).map { index ->
return attrs.indices.map { index ->
val color = a.getColor(index, 0)
return@map if (color != 0) {
color
......@@ -169,6 +169,19 @@ object MDUtil {
}
}
@RestrictTo(LIBRARY_GROUP) fun resolveFloat(
context: Context,
@AttrRes attr: Int,
defaultValue: Float = 0f
): Float {
val a = context.theme.obtainStyledAttributes(intArrayOf(attr))
try {
return a.getFloat(0, defaultValue)
} finally {
a.recycle()
}
}
@RestrictTo(LIBRARY_GROUP) fun Int.isColorDark(threshold: Double = 0.5): Boolean {
if (this == Color.TRANSPARENT) {
return false
......
......@@ -11,6 +11,7 @@
<attr format="reference" name="md_font_title"/>
<attr format="reference" name="md_font_body"/>
<attr format="reference" name="md_font_button"/>
<attr format="float" name="md_line_spacing_body"/>
<attr format="enum" name="md_button_casing">
<enum name="upper" value="1"/>
<enum name="literal" value="2"/>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册