summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/NoRelayoutTextView.java20
1 files changed, 17 insertions, 3 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/view/NoRelayoutTextView.java b/app/src/main/java/de/danoeh/antennapod/view/NoRelayoutTextView.java
index 3f921b445..cbb2ef0af 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/NoRelayoutTextView.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/NoRelayoutTextView.java
@@ -1,6 +1,5 @@
package de.danoeh.antennapod.view;
-import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import androidx.annotation.NonNull;
@@ -8,6 +7,9 @@ import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView;
public class NoRelayoutTextView extends AppCompatTextView {
+ private boolean requestLayoutEnabled = false;
+ private float maxTextLength = 0;
+
public NoRelayoutTextView(@NonNull Context context) {
super(context);
}
@@ -20,9 +22,21 @@ public class NoRelayoutTextView extends AppCompatTextView {
super(context, attrs, defStyleAttr);
}
- @SuppressLint("MissingSuperCall")
@Override
public void requestLayout() {
- // Deliberate no-op
+ if (requestLayoutEnabled) {
+ super.requestLayout();
+ }
+ requestLayoutEnabled = false;
+ }
+
+ @Override
+ public void setText(CharSequence text, BufferType type) {
+ float textLength = getPaint().measureText(text.toString());
+ if (textLength > maxTextLength) {
+ maxTextLength = textLength;
+ requestLayoutEnabled = true;
+ }
+ super.setText(text, type);
}
}