Closed moosin closed 4 years ago
I think you can use Autocomplete two times on the same edit text , each time with a different CharPolicy.
Or, you will have two change CharPolicy to work with two chars.
Both Hashtag and mention used in single edit text
private void setupMentionsAutocomplete() {
EditText edit = (EditText) findViewById(R.id.multi);
float elevation = 6f;
Drawable backgroundDrawable = new ColorDrawable(Color.WHITE);
AutocompletePolicy policy = new CharPolicy('#'); // Look for #Hashtag
AutocompletePresenter<User> presenter = new UserPresenter(this);
AutocompleteCallback<User> callback = new AutocompleteCallback<User>() {
@Override
public boolean onPopupItemClicked(Editable editable, User item) {
// Replace query text with the full name.
int[] range = CharPolicy.getQueryRange(editable);
if (range == null) return false;
int start = range[0];
int end = range[1];
String replacement = item.getUsername();
editable.replace(start, end, replacement);
// This is better done with regexes and a TextWatcher, due to what happens when
// the user clears some parts of the text. Up to you.
editable.setSpan(new StyleSpan(Typeface.BOLD), start, start + replacement.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return true;
}
public void onPopupVisibilityChanged(boolean shown) {
}
};
mentionsAutocomplete = Autocomplete.<User>on(edit)
.with(elevation)
.with(backgroundDrawable)
.with(policy)
.with(presenter)
.with(callback)
.build();
}
private void setupHashtageAutocomplete() {
EditText edit = (EditText) findViewById(R.id.multi);
float elevation = 6f;
Drawable backgroundDrawable = new ColorDrawable(Color.WHITE);
AutocompletePolicy policy = new CharPolicy('@'); // Look for @mentions
AutocompletePresenter<User> presenter = new UserPresenter(this);
AutocompleteCallback<User> callback = new AutocompleteCallback<User>() {
@Override
public boolean onPopupItemClicked(Editable editable, User item) {
// Replace query text with the full name.
int[] range = CharPolicy.getQueryRange(editable);
if (range == null) return false;
int start = range[0];
int end = range[1];
String replacement = item.getUsername();
editable.replace(start, end, replacement);
// Span to set text color to some RGB value
ForegroundColorSpan fcs = new ForegroundColorSpan(Color.BLUE);
// This is better done with regexes and a TextWatcher, due to what happens when
// the user clears some parts of the text. Up to you.
editable.setSpan(new StyleSpan(Typeface.BOLD), start, start + replacement.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
editable.setSpan(fcs, start - 1, start + replacement.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return true;
}
public void onPopupVisibilityChanged(boolean shown) {
}
};
mentionsAutocomplete = Autocomplete.<User>on(edit)
.with(elevation)
.with(backgroundDrawable)
.with(policy)
.with(presenter)
.with(callback)
.build();
}
This issue has been automatically marked as stale because it has not had activity in the last 20 days. It will be closed if no further activity occurs within the next seven days. Thank you for your contributions.
Hi Please help me to add @meiton and #hashtag together Thank you