Z
Found the library of the state https://github.com/nex3z/FlowLayout What's lower is for nothing.Overwhelmed a lot of granite, made it through. Spannablearmed with a library https://github.com/binaryfork/Spanny ♪ So, tag. TextView<TextView
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="match_parent"
android:id="@+id/marks_tv"
android:textColor="#000000"
android:layout_gravity="fill"
android:lineSpacingExtra="10dp"
android:layout_marginTop="16dp"/>
CodeList<String> marks = i.getStringArrayListExtra("marks");
Spanny span = new Spanny();
span.append("Метки:", new RoundedBackgroundSpan(ctx, Color.TRANSPARENT, Color.BLACK, category.getTextSize(), 0));
int spanCount = 0;
for (String mark : marks){
String marked = mark.toLowerCase().replace(" ", "-");
if(!marked.equals(category.getText())){
span = span.append(" ");
span = span.append(marked, new RoundedBackgroundSpan(ctx, Color.parseColor("#000000"), Color.parseColor("#ffffff"), category.getTextSize(), 10));
spanCount++;
}
}
if(spanCount == 0){
marks_tv.setVisibility(View.GONE);
} else {
marks_tv.append(span);
marks_tv.post(new Runnable(){
@Override
public void run ()
{
marks_tv.setMinimumHeight(marks_tv.getHeight() + Utils.dpToPx(ctx, 6));
}
});
}
Castom RoundedBackgroundSpanpublic class RoundedBackgroundSpan extends ReplacementSpan {
private static final int CORNER_RADIUS = 20;
private float PADDING_X;
private float PADDING_Y;
private float MAGIC_NUMBER;
private int mBackgroundColor;
private int mTextColor;
private float mTextSize;
private Context ctx;
public RoundedBackgroundSpan(Context ctx, int backgroundColor, int textColor, float textSize, int paddingX) {
this.ctx = ctx;
mBackgroundColor = backgroundColor;
mTextColor = textColor;
mTextSize = textSize;
PADDING_X = Utils.dpToPx(ctx, paddingX);
PADDING_Y = Utils.dpToPx(ctx, 2);
MAGIC_NUMBER = Utils.dpToPx(ctx, 2);
}
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
paint = new Paint(paint);
paint.setTextSize(mTextSize);
paint.setColor(mBackgroundColor);
float textHeightWrapping = Utils.dpToPx(ctx, 2);
float tagBottom = top + textHeightWrapping + PADDING_Y + mTextSize + PADDING_Y + textHeightWrapping;
float tagRight = x + getTagWidth(text, start, end, paint);
RectF rect = new RectF(x, top, tagRight, tagBottom);
canvas.drawRoundRect(rect, CORNER_RADIUS, CORNER_RADIUS, paint);
paint.setColor(mTextColor);
canvas.drawText(text, start, end, x + PADDING_X, tagBottom - PADDING_Y - textHeightWrapping - MAGIC_NUMBER, paint);
}
private int getTagWidth(CharSequence text, int start, int end, Paint paint) {
return Math.round(PADDING_X + paint.measureText(text.subSequence(start, end).toString()) + PADDING_X);
}
@Override
public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {
paint = new Paint(paint);
paint.setTextSize(mTextSize);
return getTagWidth(text, start, end, paint);
}
}
If you don't understand, write, answer. Skrinchets