mirror of https://github.com/M66B/FairEmail.git
Added chips
This commit is contained in:
parent
30abe9e607
commit
2c80c25b8a
|
@ -0,0 +1,38 @@
|
|||
package eu.faircode.email;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.RectF;
|
||||
import android.text.style.ReplacementSpan;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
public class ChipSpan extends ReplacementSpan {
|
||||
private int bg;
|
||||
private int fg;
|
||||
private int radius;
|
||||
|
||||
public ChipSpan(int bg, int fg, int radius) {
|
||||
super();
|
||||
this.bg = bg;
|
||||
this.fg = fg;
|
||||
this.radius = radius;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize(@NonNull Paint paint, CharSequence text, int start, int end, @Nullable Paint.FontMetricsInt fm) {
|
||||
return Math.round(paint.measureText(text, start, end) + 2 * radius);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, @NonNull Paint paint) {
|
||||
RectF rect = new RectF(x, top, x + paint.measureText(text, start, end) + 2 * radius, bottom);
|
||||
paint.setColor(bg);
|
||||
canvas.drawRoundRect(rect, radius, radius, paint);
|
||||
|
||||
paint.setStyle(Paint.Style.FILL);
|
||||
paint.setColor(fg);
|
||||
canvas.drawText(text, start, end, x + radius, y, paint);
|
||||
}
|
||||
}
|
|
@ -293,6 +293,42 @@ public class FragmentCompose extends FragmentBase {
|
|||
}
|
||||
});
|
||||
|
||||
final int chipBackground = Helper.resolveColor(getContext(), R.attr.colorPrimary);
|
||||
final int chipForeground = Color.WHITE;
|
||||
final int chipRadius = Helper.dp2pixels(getContext(), 6);
|
||||
|
||||
TextWatcher chip = new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable editable) {
|
||||
for (Object span : editable.getSpans(0, editable.length(), ChipSpan.class))
|
||||
editable.removeSpan(span);
|
||||
|
||||
int start = 0;
|
||||
for (int i = 0; i < editable.length(); i++)
|
||||
if (editable.charAt(i) == ',') {
|
||||
if (i > start) {
|
||||
if (editable.charAt(start) == ' ')
|
||||
start++;
|
||||
editable.setSpan(new ChipSpan(chipBackground, chipForeground, chipRadius),
|
||||
start, i, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
start = i + 1;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
etTo.addTextChangedListener(chip);
|
||||
etCc.addTextChangedListener(chip);
|
||||
etBcc.addTextChangedListener(chip);
|
||||
|
||||
View.OnClickListener onPick = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
|
|
Loading…
Reference in New Issue