gpt4 book ai didi

android - 在 Android TextView 中剥离 Emoji Fitzpatrick(肤色)字符

转载 作者:搜寻专家 更新时间:2023-11-01 09:45:06 26 4
gpt4 key购买 nike

我正在尝试显示一些文本,这些文本可能包含在 iOS 版本的应用程序上创建的表情符号。当我们在 Android 上渲染这些字符时,我会在表情符号旁边看到 [x]。

有没有办法扩展 Android TextView,以便在呈现 TextView 时忽略肤色字符。

我尝试创建一个正则表达式来用空字符替换它们,但 Android Studio 提示正则表达式无效,因为不支持十六进制字符语法,而且看起来其他转义字符也被删除了

replaceAll("[\\x{1f3fb}-\\x{1f3ff}]", "")

最佳答案

我想我终于解决了。

public class CustomTextView extends AppCompatTextView {

private static final String FITZPATRICK_PREFIX = "\uD83C";

public CustomTextView(Context context) {
this(context, null);
}

public CustomTextView(final Context context, final AttributeSet attrs) {
this(context, attrs, 0);
}

public CustomTextView(final Context context, final AttributeSet attrs, final int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

@Override
public void setText(final CharSequence text, final BufferType type) {
super.setText(stripFitzpatrickCharacters(text == null ? "" : text.toString()), type);
}

public static String stripFitzpatrickCharacters(@NonNull final String string) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N && string.contains(FITZPATRICK_PREFIX)) {
final String[] parts = string.split(FITZPATRICK_PREFIX);
final StringBuilder builder = new StringBuilder();
builder.append(parts[0]);
for (int i = 1; i < parts.length; i++) {
builder.append(parts[i].substring(1));
}
return builder.toString();
} else {
return string;
}
}

关于android - 在 Android TextView 中剥离 Emoji Fitzpatrick(肤色)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38455118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com