类android.text.method.QwertyKeyListener源码实例Demo

下面列出了怎么用android.text.method.QwertyKeyListener的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: talk-android   文件: RecipientEditTextView.java
private void handleEdit(int start, int end) {
    if (start == -1 || end == -1) {
        // This chip no longer exists in the field.
        dismissDropDown();
        return;
    }
    // This is in the middle of a chip, so select out the whole chip
    // and commit it.
    Editable editable = getText();
    setSelection(end);
    String text = getText().toString().substring(start, end);
    if (!TextUtils.isEmpty(text)) {
        RecipientEntry entry = RecipientEntry.constructFakeEntry(text, isValid(text));
        QwertyKeyListener.markAsReplaced(editable, start, end, "");
        CharSequence chipText = createChip(entry, false);
        int selEnd = getSelectionEnd();
        if (chipText != null && start > -1 && selEnd > -1) {
            editable.replace(start, selEnd, chipText);
        }
    }
    dismissDropDown();
}
 
源代码2 项目: talk-android   文件: RecipientEditTextView.java
private void submitItem(RecipientEntry entry) {
    if (entry == null) {
        return;
    }
    clearComposingText();

    int end = getSelectionEnd();
    int start = mTokenizer.findTokenStart(getText(), end);

    Editable editable = getText();
    QwertyKeyListener.markAsReplaced(editable, start, end, "");
    CharSequence chip = createChip(entry, false);
    if (chip != null && start >= 0 && end >= 0) {
        editable.replace(start, end, chip);
    }
    sanitizeBetween();
}
 
源代码3 项目: talk-android   文件: TextChipsEditView.java
private void handleEdit(int start, int end) {
    if (start == -1 || end == -1) {
        // This chip no longer exists in the field.
        dismissDropDown();
        return;
    }
    // This is in the middle of a chip, so select out the whole chip
    // and commit it.
    Editable editable = getText();
    setSelection(end);
    String text = getText().toString().substring(start, end);
    if (!TextUtils.isEmpty(text)) {
        RecipientEntry entry = RecipientEntry.constructFakeEntry(text, isValid(text));
        QwertyKeyListener.markAsReplaced(editable, start, end, "");
        CharSequence chipText = createChip(entry, false);
        int selEnd = getSelectionEnd();
        if (chipText != null && start > -1 && selEnd > -1) {
            editable.replace(start, selEnd, chipText);
        }
    }
    dismissDropDown();
}
 
源代码4 项目: talk-android   文件: TextChipsEditView.java
private void submitItem(RecipientEntry entry) {
    if (entry == null) {
        return;
    }
    clearComposingText();

    int end = getSelectionEnd();
    int start = mTokenizer.findTokenStart(getText(), end);

    Editable editable = getText();
    QwertyKeyListener.markAsReplaced(editable, start, end, "");
    CharSequence chip = createChip(entry, false);
    if (chip != null && start >= 0 && end >= 0) {
        editable.replace(start, end, chip);
    }
    sanitizeBetween();
}
 
源代码5 项目: talk-android   文件: TextChipsEditView.java
/**
 * Remove selection from this chip. Unselecting a RecipientChip will render
 * the chip without a delete icon and with an unfocused background. This is
 * called when the RecipientChip no longer has focus.
 */
private void unselectChip(DrawableRecipientChip chip) {
    int start = getChipStart(chip);
    int end = getChipEnd(chip);
    Editable editable = getText();
    mSelectedChip = null;
    if (start == -1 || end == -1) {
        Log.w(TAG, "The chip doesn't exist or may be a chip a user was editing");
        setSelection(editable.length());
        commitDefault();
    } else {
        getSpannable().removeSpan(chip);
        QwertyKeyListener.markAsReplaced(editable, start, end, "");
        editable.removeSpan(chip);
        try {
            if (!mNoChips) {
                editable.setSpan(constructChipSpan(chip.getEntry(), false, false),
                        start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        } catch (NullPointerException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
    setCursorVisible(true);
    setSelection(editable.length());
}
 
源代码6 项目: ChipsLibrary   文件: RecipientEditTextView.java
private void handleEdit(final int start,final int end)
{
if(start==-1||end==-1)
  {
  // This chip no longer exists in the field.
  dismissDropDown();
  return;
  }
// This is in the middle of a chip, so select out the whole chip
// and commit it.
final Editable editable=getText();
setSelection(end);
final String text=getText().toString().substring(start,end);
if(!TextUtils.isEmpty(text))
  {
  final RecipientEntry entry=RecipientEntry.constructFakeEntry(text,isValid(text));
  QwertyKeyListener.markAsReplaced(editable,start,end,"");
  final CharSequence chipText=createChip(entry,false);
  final int selEnd=getSelectionEnd();
  if(chipText!=null&&start>-1&&selEnd>-1)
    editable.replace(start,selEnd,chipText);
  }
dismissDropDown();
}
 
源代码7 项目: ChipsLibrary   文件: RecipientEditTextView.java
private void submitItemAtPosition(final int position)
{
final RecipientEntry entry=createValidatedEntry(getAdapter().getItem(position));
if(entry==null)
  return;
clearComposingText();
final int end=getSelectionEnd();
final int start=mTokenizer.findTokenStart(getText(),end);
final Editable editable=getText();
QwertyKeyListener.markAsReplaced(editable,start,end,"");
final CharSequence chip=createChip(entry,false);
if(chip!=null&&start>=0&&end>=0)
  editable.replace(start,end,chip);
sanitizeBetween();
if(mChipListener!=null)
  mChipListener.onDataChanged();
}
 
/**
 * <p>Performs the text completion by replacing the range from
 * {@link Tokenizer#findTokenStart} to {@link #getSelectionEnd} by the
 * the result of passing <code>text</code> through
 * {@link Tokenizer#terminateToken}.
 * In addition, the replaced region will be marked as an AutoText
 * substition so that if the user immediately presses DEL, the
 * completion will be undone.
 * Subclasses may override this method to do some different
 * insertion of the content into the edit box.</p>
 *
 * @param text the selected suggestion in the drop down list
 */
@Override
protected void replaceText(CharSequence text) {
    clearComposingText();

    int end = getSelectionEnd();
    int start = mTokenizer.findTokenStart(getText(), end);

    Editable editable = getText();
    String original = TextUtils.substring(editable, start, end);

    QwertyKeyListener.markAsReplaced(editable, start, end, original);
    editable.replace(start, end, mTokenizer.terminateToken(text));
}
 
源代码9 项目: talk-android   文件: RecipientEditTextView.java
private boolean commitChip(int start, int end, Editable editable) {
    ListAdapter adapter = getAdapter();
    if (adapter != null && adapter.getCount() > 0 && enoughToFilter()
            && end == getSelectionEnd() && !isPhoneQuery()) {
        // choose the first entry.
        submitItemAtPosition(0);
        dismissDropDown();
        return true;
    } else {
        int tokenEnd = mTokenizer.findTokenEnd(editable, start);
        if (editable.length() > tokenEnd + 1) {
            char charAt = editable.charAt(tokenEnd + 1);
            if (charAt == COMMIT_CHAR_COMMA || charAt == COMMIT_CHAR_SEMICOLON) {
                tokenEnd++;
            }
        }
        String text = editable.toString().substring(start, tokenEnd).trim();
        clearComposingText();
        if (text != null && text.length() > 0 && !text.equals(" ")) {
            RecipientEntry entry = createTokenizedEntry(text);
            if (entry != null) {
                QwertyKeyListener.markAsReplaced(editable, start, end, "");
                CharSequence chipText = createChip(entry, false);
                if (chipText != null && start > -1 && end > -1) {
                    editable.replace(start, end, chipText);
                }
            }
            // Only dismiss the dropdown if it is related to the text we
            // just committed.
            // For paste, it may not be as there are possibly multiple
            // tokens being added.
            if (end == getSelectionEnd()) {
                dismissDropDown();
            }
            sanitizeBetween();
            return true;
        }
    }
    return false;
}
 
源代码10 项目: talk-android   文件: RecipientEditTextView.java
/**
 * Remove selection from this chip. Unselecting a RecipientChip will render
 * the chip without a delete icon and with an unfocused background. This is
 * called when the RecipientChip no longer has focus.
 */
private void unselectChip(DrawableRecipientChip chip) {
    int start = getChipStart(chip);
    int end = getChipEnd(chip);
    Editable editable = getText();
    mSelectedChip = null;
    if (start == -1 || end == -1) {
        Log.w(TAG, "The chip doesn't exist or may be a chip a user was editing");
        setSelection(editable.length());
        commitDefault();
    } else {
        getSpannable().removeSpan(chip);
        QwertyKeyListener.markAsReplaced(editable, start, end, "");
        editable.removeSpan(chip);
        try {
            if (!mNoChips) {
                editable.setSpan(constructChipSpan(chip.getEntry(), false, false),
                        start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        } catch (NullPointerException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
    setCursorVisible(true);
    setSelection(editable.length());
    if (mAlternatesPopup != null && mAlternatesPopup.isShowing()) {
        mAlternatesPopup.dismiss();
    }
}
 
源代码11 项目: talk-android   文件: TextChipsEditView.java
private boolean commitChip(int start, int end, Editable editable) {
    ListAdapter adapter = getAdapter();
    if (adapter != null && adapter.getCount() > 0 && enoughToFilter()
            && end == getSelectionEnd() && !isPhoneQuery()) {
        // choose the first entry.
        submitItemAtPosition(0);
        dismissDropDown();
        return true;
    } else {
        int tokenEnd = mTokenizer.findTokenEnd(editable, start);
        if (editable.length() > tokenEnd + 1) {
            char charAt = editable.charAt(tokenEnd + 1);
            if (charAt == COMMIT_CHAR_COMMA || charAt == COMMIT_CHAR_SEMICOLON) {
                tokenEnd++;
            }
        }
        String text = editable.toString().substring(start, tokenEnd).trim();
        clearComposingText();
        if (text != null && text.length() > 0 && !text.equals(" ")) {
            RecipientEntry entry = createTokenizedEntry(text);
            if (entry != null) {
                QwertyKeyListener.markAsReplaced(editable, start, end, "");
                CharSequence chipText = createChip(entry, false);
                if (chipText != null && start > -1 && end > -1) {
                    editable.replace(start, end, chipText);
                }
            }
            // Only dismiss the dropdown if it is related to the text we
            // just committed.
            // For paste, it may not be as there are possibly multiple
            // tokens being added.
            if (end == getSelectionEnd()) {
                dismissDropDown();
            }
            sanitizeBetween();
            return true;
        }
    }
    return false;
}
 
源代码12 项目: ChipsLibrary   文件: RecipientEditTextView.java
/**
 * Remove selection from this chip. Unselecting a RecipientChip will render the chip without a delete icon and with
 * an unfocused background. This is called when the RecipientChip no longer has focus.
 */
private void unselectChip(final DrawableRecipientChip chip)
  {
  final int start=getChipStart(chip);
  final int end=getChipEnd(chip);
  final Editable editable=getText();
  mSelectedChip=null;
  if(start==-1||end==-1)
    {
    Log.w(TAG,"The chip doesn't exist or may be a chip a user was editing");
    setSelection(editable.length());
    commitDefault();
    }
  else
    {
    getSpannable().removeSpan(chip);
    QwertyKeyListener.markAsReplaced(editable,start,end,"");
    editable.removeSpan(chip);
    try
      {
      if(!mNoChips)
        editable.setSpan(constructChipSpan(chip.getEntry(),false,false),start,end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
      }
    catch(final NullPointerException e)
      {
      Log.e(TAG,e.getMessage(),e);
      }
    }
  setCursorVisible(true);
  setSelection(editable.length());
  if(mAlternatesPopup!=null&&mAlternatesPopup.isShowing())
    mAlternatesPopup.dismiss();
  }
 
@Override
protected void replaceText(CharSequence text) {
    clearComposingText();
    SpannableStringBuilder ssb = buildSpannableForText(text);
    TokenImageSpan tokenSpan = buildSpanForObject(selectedObject);

    Editable editable = getText();
    int end = getSelectionEnd();
    int start = tokenizer.findTokenStart(editable, end);
    if (start < prefix.length()) {
        start = prefix.length();
    }
    
    start = beforeReplacingText(editable,start,end);
    
    String original = TextUtils.substring(editable, start, end);

    if (editable != null) {
        if (tokenSpan == null) {
            editable.replace(start, end, " ");
        } else if (!allowDuplicates && objects.contains(tokenSpan.getToken())) {
            editable.replace(start, end, " ");
        } else {
            QwertyKeyListener.markAsReplaced(editable, start, end, original);
            editable.replace(start, end, ssb);
            editable.setSpan(tokenSpan, start, start + ssb.length() - 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }
    
    afterReplacingText(editable);
}
 
源代码14 项目: ChipsLibrary   文件: RecipientEditTextView.java
private boolean commitChip(final int start,final int end,final Editable editable)
{
final ListAdapter adapter=getAdapter();
if(adapter!=null&&adapter.getCount()>0&&enoughToFilter()&&end==getSelectionEnd()&&!isPhoneQuery())
  {
  // choose the first entry.
  submitItemAtPosition(0);
  dismissDropDown();
  return true;
  }
else
  {
  int tokenEnd=mTokenizer.findTokenEnd(editable,start);
  if(editable.length()>tokenEnd+1)
    {
    final char charAt=editable.charAt(tokenEnd+1);
    if(charAt==COMMIT_CHAR_COMMA||charAt==COMMIT_CHAR_SEMICOLON)
      tokenEnd++;
    }
  final String text=editable.toString().substring(start,tokenEnd).trim();
  clearComposingText();
  if(text!=null&&text.length()>0&&!text.equals(" "))
    {
    final RecipientEntry entry=createTokenizedEntry(text);
    if(entry!=null)
      {
      QwertyKeyListener.markAsReplaced(editable,start,end,"");
      final CharSequence chipText=createChip(entry,false);
      if(chipText!=null&&start>-1&&end>-1)
        editable.replace(start,end,chipText);
      }
    // Only dismiss the dropdown if it is related to the text we
    // just committed.
    // For paste, it may not be as there are possibly multiple
    // tokens being added.
    if(end==getSelectionEnd())
      dismissDropDown();
    sanitizeBetween();
    return true;
    }
  }
return false;
}
 
 类所在包
 类方法
 同包方法