diff --git a/app/src/main/java/com/keylesspalace/tusky/FlowLayout.java b/app/src/main/java/com/keylesspalace/tusky/FlowLayout.java
new file mode 100644
index 00000000..08ceb2fb
--- /dev/null
+++ b/app/src/main/java/com/keylesspalace/tusky/FlowLayout.java
@@ -0,0 +1,90 @@
+package com.keylesspalace.tusky;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+
+public class FlowLayout extends ViewGroup {
+ private int paddingHorizontal; // internal padding between child views
+ private int paddingVertical; //
+ private int totalHeight;
+
+ public FlowLayout(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public FlowLayout(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ TypedArray a = context.getTheme().obtainStyledAttributes(
+ attrs, R.styleable.FlowLayout, 0, 0);
+ try {
+ paddingHorizontal = a.getDimensionPixelSize(
+ R.styleable.FlowLayout_paddingHorizontal, 0);
+ paddingVertical = a.getDimensionPixelSize(R.styleable.FlowLayout_paddingVertical, 0);
+ } finally {
+ a.recycle();
+ }
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ assert (MeasureSpec.getMode(widthMeasureSpec) != MeasureSpec.UNSPECIFIED);
+ int width = MeasureSpec.getSize(widthMeasureSpec) - getPaddingLeft() - getPaddingRight();
+ int height = MeasureSpec.getSize(heightMeasureSpec) - getPaddingTop() - getPaddingBottom();
+ int count = getChildCount();
+ int x = getPaddingLeft();
+ int y = getPaddingTop();
+ int childHeightMeasureSpec;
+ if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST) {
+ childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST);
+ } else {
+ childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
+ }
+ totalHeight = 0;
+ for (int i = 0; i < count; i++) {
+ View child = getChildAt(i);
+ if (child.getVisibility() != GONE) {
+ child.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST),
+ childHeightMeasureSpec);
+ int childwidth = child.getMeasuredWidth();
+ totalHeight = Math.max(totalHeight, child.getMeasuredHeight() + paddingVertical);
+ if (x + childwidth > width) {
+ x = getPaddingLeft();
+ y += totalHeight;
+ }
+ x += childwidth + paddingHorizontal;
+ }
+ }
+ if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.UNSPECIFIED) {
+ height = y + totalHeight;
+ } else if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST) {
+ if (y + totalHeight < height) {
+ height = y + totalHeight;
+ }
+ }
+ height += 5; // Fudge to avoid clipping bottom of last row.
+ setMeasuredDimension(width, height);
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ final int width = r - l;
+ int x = getPaddingLeft();
+ int y = getPaddingTop();
+ for (int i = 0; i < getChildCount(); i++) {
+ View child = getChildAt(i);
+ if (child.getVisibility() != GONE) {
+ int childWidth = child.getMeasuredWidth();
+ int childHeight = child.getMeasuredHeight();
+ if (x + childWidth > width) {
+ x = getPaddingLeft();
+ y += totalHeight;
+ }
+ child.layout(x, y, x + childWidth, y + childHeight);
+ x += childWidth + paddingHorizontal;
+ }
+ }
+ }
+}
diff --git a/app/src/main/res/layout/item_status.xml b/app/src/main/res/layout/item_status.xml
index 0071d197..a89d5430 100644
--- a/app/src/main/res/layout/item_status.xml
+++ b/app/src/main/res/layout/item_status.xml
@@ -39,8 +39,7 @@
android:layout_below="@+id/status_boosted"
android:padding="@dimen/status_avatar_padding" />
-
+ android:paddingLeft="@dimen/status_username_left_margin" />
+ android:paddingLeft="@dimen/status_since_created_left_margin" />
-
+
-
+ android:id="@+id/status_content_warning_description"
+ android:paddingRight="8dp"/>
+ android:padding="4dp" />
-
+
+
+
+
+
+
+
\ No newline at end of file