6.6.2 - Alpha6 - 调色盘增强 HEX 输入控件的剪贴板兼容性
This commit is contained in:
@@ -355,7 +355,7 @@ public class ColorPickerDialog extends DialogFragment implements ColorPickerView
|
||||
setHex(color);
|
||||
|
||||
if (!showAlphaSlider) {
|
||||
hexEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
|
||||
hexEditText.setFilters(new InputFilter[]{new HexMaxLengthInputFilter(6)});
|
||||
}
|
||||
|
||||
if (!useLegacyMode) {
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.jaredrummler.android.colorpicker
|
||||
|
||||
import android.text.InputFilter
|
||||
import android.text.Spanned
|
||||
|
||||
class HexMaxLengthInputFilter(private val maxLength: Int) : InputFilter {
|
||||
|
||||
override fun filter(
|
||||
source: CharSequence, start: Int, end: Int,
|
||||
dest: Spanned, dstart: Int, dend: Int,
|
||||
): CharSequence? {
|
||||
val result = buildString {
|
||||
append(dest.subSequence(0, dstart))
|
||||
append(source.subSequence(start, end))
|
||||
append(dest.subSequence(dend, dest.length))
|
||||
}.trimStart('#').replace("\\s+".toRegex(), "")
|
||||
|
||||
if (result.length <= maxLength) return null
|
||||
|
||||
val keep = maxLength - (dest.length - (dend - dstart))
|
||||
if (keep <= 0) return ""
|
||||
return source.subSequence(start, start + keep)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user