Relayout NoRelayoutTextView if text gets longer (#6587)

This commit is contained in:
ByteHamster 2023-08-19 10:46:17 +02:00 committed by GitHub
parent ca9358234f
commit 49ac7a83b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 3 deletions

View File

@ -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);
}
}