6.6.2 - Alpha6 - 调色盘增强 HEX 输入控件的剪贴板兼容性

This commit is contained in:
SuperMonster003
2025-04-13 20:46:19 +08:00
parent 1cd5281446
commit d4ff603fb5
17 changed files with 151 additions and 121 deletions

View File

@@ -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) {

View File

@@ -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)
}
}