android.text.Editable#getFilters ( )源码实例Demo

下面列出了android.text.Editable#getFilters ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Pix-Art-Messenger   文件: EditMessage.java
@Override
public boolean onTextContextMenuItem(int id) {
    if (id == android.R.id.paste) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            return super.onTextContextMenuItem(android.R.id.pasteAsPlainText);
        } else {
            Editable editable = getEditableText();
            InputFilter[] filters = editable.getFilters();
            InputFilter[] tempFilters = new InputFilter[filters != null ? filters.length + 1 : 1];
            if (filters != null) {
                System.arraycopy(filters, 0, tempFilters, 1, filters.length);
            }
            tempFilters[0] = SPAN_FILTER;
            editable.setFilters(tempFilters);
            try {
                return super.onTextContextMenuItem(id);
            } finally {
                editable.setFilters(filters);
            }
        }
    } else {
        return super.onTextContextMenuItem(id);
    }
}
 
源代码2 项目: canarinho   文件: ValorMonetarioWatcher.java
private void atualizaTexto(Editable editable, String valor) {
    mudancaInterna = true;

    final InputFilter[] oldFilters = editable.getFilters();

    editable.setFilters(new InputFilter[] {});
    editable.replace(0, editable.length(), valor);

    editable.setFilters(oldFilters);

    if (valor.equals(editable.toString())) {
        // TODO: estudar implantar a manutenção da posição do cursor
        Selection.setSelection(editable, valor.length());
    }

    mudancaInterna = false;
}
 
源代码3 项目: Dashchan   文件: SafePasteEditText.java
@Override
public boolean onTextContextMenuItem(int id) {
	if (id == android.R.id.paste) {
		Editable editable = getEditableText();
		InputFilter[] filters = editable.getFilters();
		InputFilter[] tempFilters = new InputFilter[filters != null ? filters.length + 1 : 1];
		if (filters != null) {
			System.arraycopy(filters, 0, tempFilters, 1, filters.length);
		}
		tempFilters[0] = SPAN_FILTER;
		editable.setFilters(tempFilters);
		try {
			return super.onTextContextMenuItem(id);
		} finally {
			editable.setFilters(filters);
		}
	} else {
		return super.onTextContextMenuItem(id);
	}
}
 
源代码4 项目: Conversations   文件: EditMessage.java
@Override
public boolean onTextContextMenuItem(int id) {
    if (id == android.R.id.paste) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            return super.onTextContextMenuItem(android.R.id.pasteAsPlainText);
        } else {
            Editable editable = getEditableText();
            InputFilter[] filters = editable.getFilters();
            InputFilter[] tempFilters = new InputFilter[filters != null ? filters.length + 1 : 1];
            if (filters != null) {
                System.arraycopy(filters, 0, tempFilters, 1, filters.length);
            }
            tempFilters[0] = SPAN_FILTER;
            editable.setFilters(tempFilters);
            try {
                return super.onTextContextMenuItem(id);
            } finally {
                editable.setFilters(filters);
            }
        }
    } else {
        return super.onTextContextMenuItem(id);
    }
}
 
源代码5 项目: PaymentKit-Droid   文件: ViewUtils.java
public static void replaceAllText(Editable editable, CharSequence newString) {
    InputFilter[] filters = editable.getFilters();
    editable.setFilters(new InputFilter[] { });
    // We need to remove filters so we can add text with spaces.
    editable.replace(0, editable.length(), newString);
    editable.setFilters(filters);
}
 
源代码6 项目: FormatEditText   文件: FormattedEditText.java
private void formatTextWhenDelete(final Editable editable, int start, int before) {
    mIsFormatted = true;
    final boolean filter = mFilterRestoreTextChangeEvent;
    super.removeTextChangedListener(mTextWatcher);
    InputFilter[] filters = editable.getFilters();
    editable.setFilters(EMPTY_FILTERS);
    int selectionStart, selectionEnd;
    if (!filter) {
        selectionStart = Selection.getSelectionStart(editable);
        selectionEnd = Selection.getSelectionEnd(editable);
        editable.setSpan(SELECTION_SPAN, selectionStart, selectionEnd, Spanned.SPAN_MARK_MARK);
    }
    if (mMode < MODE_MASK) {
        final boolean deletedLast = start >= editable.length();
        if (!deletedLast) {
            formatDefined(editable, start, true);
        } else {
            for (int i = start; i > 0; i--) {
                final char sub = editable.charAt(i - 1);
                final char place = findPlaceholder(i - 1);
                if (sub == place) {
                    editable.delete(i - 1, i);
                } else {
                    break;
                }
            }
        }
    } else {
        formatMask(editable, start, true);
    }
    if (!filter) {
        selectionStart = editable.getSpanStart(SELECTION_SPAN);
        selectionEnd = editable.getSpanEnd(SELECTION_SPAN);
        editable.removeSpan(SELECTION_SPAN);
        editable.setFilters(filters);
        Editable text = getText();
        Selection.setSelection(text, selectionStart, selectionEnd);
    } else {
        setFilters(filters);
    }
    mIsFormatted = false;
    super.addTextChangedListener(mTextWatcher);
}
 
源代码7 项目: FormatEditText   文件: FormattedEditText.java
private void formatTextWhenAppend(final Editable editable, int start, int before, int count) {
    mIsFormatted = true;
    final boolean filter = mFilterRestoreTextChangeEvent;
    super.removeTextChangedListener(mTextWatcher);
    InputFilter[] filters = editable.getFilters();
    editable.setFilters(EMPTY_FILTERS);
    int selectionStart, selectionEnd;
    if (!filter) {
        selectionStart = Selection.getSelectionStart(editable);
        selectionEnd = Selection.getSelectionEnd(editable);
        editable.setSpan(SELECTION_SPAN, selectionStart, selectionEnd, Spanned.SPAN_MARK_MARK);
    }
    if (mMode < MODE_MASK) {
        boolean appendedLast = start > mHolders[mHolders.length - 1].index;
        if (!appendedLast) {
            formatDefined(editable, start, false);
        }
    } else {
        formatMask(editable, start, false);
    }
    if (!filter) {
        selectionStart = editable.getSpanStart(SELECTION_SPAN);
        selectionEnd = editable.getSpanEnd(SELECTION_SPAN);
        editable.removeSpan(SELECTION_SPAN);
        editable.setFilters(filters);
        if (mLengthFilterDelegate != null) {
            CharSequence out =
                    mLengthFilterDelegate.mFilter.filter(
                            editable, 0, editable.length(), EMPTY_SPANNED, 0, 0);
            if (out != null) {
                editable.delete(out.length(), editable.length());
            }
        }
        Selection.setSelection(
                editable,
                Math.min(selectionStart, editable.length()),
                Math.min(selectionEnd, editable.length()));
    } else {
        editable.setFilters(filters);
    }
    mIsFormatted = false;
    super.addTextChangedListener(mTextWatcher);
}
 
源代码8 项目: TwistyTimer   文件: SolveTimeNumberTextWatcher.java
@Override
public void afterTextChanged(Editable s) {
    if (isFormatting)
        return;

    isFormatting = true;

    // Since the keyboard input type is "number", we can't punctuation with the actual
    // filters, so we clear them and restore once we finish formatting
    InputFilter[] filters = s.getFilters(); // save filters
    s.setFilters(new InputFilter[] {});     // clear filters


    // Clear all formatting from editable
    // Regex matches the characters ':', '.', 'h' and a leading zero, if present
    mUnformatted = s.toString().replaceAll("^0+|[h]|:|\\.", "");
    mLen = mUnformatted.length();

    s.clear();
    s.insert(0, mUnformatted);


    if (mLen <= 2 && mLen > 0) { // 12 -> 0.12
        s.insert(0, "0.");
    } else if (mLen == 3) { // 123 -> 1.23
        s.insert(1, ".");
    } else if (mLen == 4) { // 1234 -> 12.34
        s.insert(2, ".");
    } else if (mLen == 5) { // 12345 -> 1:23.45
        s.insert(1, ":");
        s.insert(4, ".");
    } else if (mLen == 6) { // 123456 -> 12:34.56
        s.insert(2, ":");
        s.insert(5, ".");
    } else if (mLen == 7) { // 1234567 -> 1:23:45.67
        s.insert(1, "h");
        s.insert(4, ":");
        s.insert(7, ".");
    } else if (mLen == 8) { // 12345678 -> 12:34:56.78
        s.insert(2, "h");
        s.insert(5, ":");
        s.insert(8, ".");
    }

    isFormatting = false;

    // Restore filters
    s.setFilters(filters);
}
 
源代码9 项目: FormattEditText   文件: MaskedEditText.java
private void formatMask(@NonNull Editable value) {
	InputFilter[] inputFilters = value.getFilters();
	value.setFilters(new InputFilter[0]);

	int indexInMask = 0;
	int indexInText = 0;
	int maskLength = 0;
	int inputLength = 0;
	boolean treatNextCharAsLiteral = false;
	boolean maskIsNotNumeric = false;

	Object selection = new Object();
	value.setSpan(selection, Selection.getSelectionStart(value), Selection.getSelectionEnd(value), Spanned.SPAN_MARK_MARK);

	while (indexInMask < mask.length()) {
		char charInMask = mask.charAt(indexInMask);
		if (!treatNextCharAsLiteral && isMaskChar(charInMask)) {
			// Found mask character, try to parse text
			maskIsNotNumeric |= charInMask != NUMBER_MASK;
			if (indexInText >= value.length()) {
				// Add trailing placeholders
				value.insert(indexInText, placeholder);
				value.setSpan(new PlaceholderSpan(), indexInText, indexInText + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
				++indexInText;
				++inputLength;
				++maskLength;
				++indexInMask;
			} else if (!matchMask(charInMask, value.charAt(indexInText))) {
				// Skip bad character in text
				value.delete(indexInText, indexInText + 1);
			} else {
				// Character in text is acceptable, go to next character in mask
				++indexInText;
				++inputLength;
				++maskLength;
				++indexInMask;
			}
		} else if (!treatNextCharAsLiteral && charInMask == ESCAPE_CHAR) {
			// Next character in mask must be escaped
			treatNextCharAsLiteral = true;
			++indexInMask;
		} else {
			// Found a literal or escaped character in mask
			value.insert(indexInText, String.valueOf(charInMask));
			value.setSpan(new LiteralSpan(), indexInText, indexInText + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
			treatNextCharAsLiteral = false;

			++indexInText;
			++maskLength;
			++indexInMask;
		}
	}

	while (value.length() > maskLength) {
		int pos = value.length() - 1;
		value.delete(pos, pos + 1);
	}

	Selection.setSelection(value, value.getSpanStart(selection), value.getSpanEnd(selection));
	value.removeSpan(selection);

	value.setFilters(inputFilters);

	int newInputType = inputLength > 0
			? (maskIsNotNumeric
			? InputType.TYPE_CLASS_TEXT
			: InputType.TYPE_CLASS_NUMBER)
			: 0;
	if (getInputType() != newInputType)
		setInputType(newInputType);
}