Use SpannableString instead of SpannableStringBuilder when it's possible
This commit is contained in:
parent
f18f7aab5c
commit
ed16f1b2bc
|
@ -68,20 +68,19 @@ private fun TextView.setClickableTextWithoutUnderlines(@StringRes textId: Int) {
|
||||||
|
|
||||||
Linkify.addLinks(text, Linkify.WEB_URLS)
|
Linkify.addLinks(text, Linkify.WEB_URLS)
|
||||||
|
|
||||||
val builder = SpannableStringBuilder(text)
|
|
||||||
val urlSpans = text.getSpans(0, text.length, URLSpan::class.java)
|
val urlSpans = text.getSpans(0, text.length, URLSpan::class.java)
|
||||||
for (span in urlSpans) {
|
for (span in urlSpans) {
|
||||||
val start = builder.getSpanStart(span)
|
val start = text.getSpanStart(span)
|
||||||
val end = builder.getSpanEnd(span)
|
val end = text.getSpanEnd(span)
|
||||||
val flags = builder.getSpanFlags(span)
|
val flags = text.getSpanFlags(span)
|
||||||
|
|
||||||
val customSpan = object : CustomURLSpan(span.url) {}
|
val customSpan = object : CustomURLSpan(span.url) {}
|
||||||
|
|
||||||
builder.removeSpan(span)
|
text.removeSpan(span)
|
||||||
builder.setSpan(customSpan, start, end, flags)
|
text.setSpan(customSpan, start, end, flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
setText(builder)
|
setText(text)
|
||||||
linksClickable = true
|
linksClickable = true
|
||||||
movementMethod = LinkMovementMethod.getInstance()
|
movementMethod = LinkMovementMethod.getInstance()
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ import android.graphics.PorterDuff;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.text.InputFilter;
|
import android.text.InputFilter;
|
||||||
|
import android.text.SpannableString;
|
||||||
import android.text.SpannableStringBuilder;
|
import android.text.SpannableStringBuilder;
|
||||||
import android.text.Spanned;
|
import android.text.Spanned;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
@ -523,7 +524,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
message.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
|
message.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
|
||||||
final SpannableStringBuilder str = new SpannableStringBuilder(wholeMessage);
|
final SpannableString str = new SpannableString(wholeMessage);
|
||||||
str.setSpan(new StyleSpan(Typeface.BOLD), 0, displayName.length(),
|
str.setSpan(new StyleSpan(Typeface.BOLD), 0, displayName.length(),
|
||||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
CharSequence emojifiedText = CustomEmojiHelper.emojify(str, notificationViewData.getAccount().getEmojis(), message, true);
|
CharSequence emojifiedText = CustomEmojiHelper.emojify(str, notificationViewData.getAccount().getEmojis(), message, true);
|
||||||
|
|
|
@ -21,9 +21,12 @@ import android.graphics.Canvas
|
||||||
import android.graphics.Paint
|
import android.graphics.Paint
|
||||||
import android.graphics.drawable.BitmapDrawable
|
import android.graphics.drawable.BitmapDrawable
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.text.SpannableString
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
|
import android.text.Spanned
|
||||||
import android.text.style.ReplacementSpan
|
import android.text.style.ReplacementSpan
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.core.text.toSpannable
|
||||||
|
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.request.target.CustomTarget
|
import com.bumptech.glide.request.target.CustomTarget
|
||||||
|
@ -46,7 +49,7 @@ fun CharSequence.emojify(emojis: List<Emoji>?, view: View, forceSmallEmoji: Bool
|
||||||
if(emojis.isNullOrEmpty())
|
if(emojis.isNullOrEmpty())
|
||||||
return this
|
return this
|
||||||
|
|
||||||
val builder = SpannableStringBuilder.valueOf(this)
|
val builder = SpannableString.valueOf(this)
|
||||||
val pm = PreferenceManager.getDefaultSharedPreferences(view.context)
|
val pm = PreferenceManager.getDefaultSharedPreferences(view.context)
|
||||||
val smallEmojis = forceSmallEmoji || !pm.getBoolean("bigEmojis", true)
|
val smallEmojis = forceSmallEmoji || !pm.getBoolean("bigEmojis", true)
|
||||||
// val animatedEmojis = pm.getBoolean("animateEmojis", false)
|
// val animatedEmojis = pm.getBoolean("animateEmojis", false)
|
||||||
|
@ -62,7 +65,7 @@ fun CharSequence.emojify(emojis: List<Emoji>?, view: View, forceSmallEmoji: Bool
|
||||||
EmojiSpan(WeakReference<View>(view))
|
EmojiSpan(WeakReference<View>(view))
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.setSpan(span, matcher.start(), matcher.end(), 0);
|
builder.setSpan(span, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
Glide.with(view)
|
Glide.with(view)
|
||||||
.asBitmap()
|
.asBitmap()
|
||||||
.load(url)
|
.load(url)
|
||||||
|
|
|
@ -20,6 +20,7 @@ import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.text.SpannableString;
|
||||||
import android.text.SpannableStringBuilder;
|
import android.text.SpannableStringBuilder;
|
||||||
import android.text.Spanned;
|
import android.text.Spanned;
|
||||||
import android.text.method.LinkMovementMethod;
|
import android.text.method.LinkMovementMethod;
|
||||||
|
@ -187,7 +188,7 @@ public class LinkHelper {
|
||||||
public static CharSequence createClickableText(String text, String link) {
|
public static CharSequence createClickableText(String text, String link) {
|
||||||
URLSpan span = new CustomURLSpan(link);
|
URLSpan span = new CustomURLSpan(link);
|
||||||
|
|
||||||
SpannableStringBuilder clickableText = new SpannableStringBuilder(text);
|
SpannableString clickableText = new SpannableString(text);
|
||||||
clickableText.setSpan(span, 0, text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
clickableText.setSpan(span, 0, text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||||
return clickableText;
|
return clickableText;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue