Я использую библиотеку Markwon и у меня возникла проблема. Он не распознает ссылки. Я ввожу ссылки как [name](link)
, и они отображают только имя, не выделяют и не реагируют на нажатия на это имя. Как я могу исправить эту ошибку?
Мои записи Gradle:
implementation "ru.noties:markwon:2.0.1"
implementation "ru.noties:markwon-image-loader:2.0.1"
implementation "ru.noties:markwon-syntax-highlight:2.0.1"
implementation "ru.noties:markwon-view:2.0.1"
Конфигурация:
public SpannableConfiguration getAboutTextConfig() {
ImageSizeResolverFitWidth imgSizeResolver = new ImageSizeResolverFitWidth();
return SpannableConfiguration.builder(this.context)
.asyncDrawableLoader(AsyncDrawableLoader.create())
.imageSizeResolver(imgSizeResolver)
.build();
}
Я также пробовал это:
В коде:
act_txt.setMovementMethod(LinkMovementMethod.getInstance());
В макете:
<TextView
android:id="@+id/act_txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:autoLink="web"
android:focusable="true"
android:fontFamily="@font/roboto_regular"
android:letterSpacing="0.03"
android:lineSpacingExtra="12sp"
android:linksClickable="true"
android:paddingBottom="30dp"
android:textColor="@color/titleTextColor"
android:textSize="16sp"
android:textStyle="normal" />
и переопределить LinkResolver
и UrlProc
class LinkResolver implements LinkSpan.Resolver {
@Override
public void resolve(View view, @NonNull String link) {
final Uri uri = Uri.parse(link);
final Context context = view.getContext();
final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
try {
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.w("LinkResolverDef", "Actvity was not found for intent, " + intent.toString());
}
}
}
@SuppressWarnings("WeakerAccess")
public class UrlProcessorRelative implements UrlProcessor {
private final URL base;
public UrlProcessorRelative(@NonNull String base) {
this.base = obtain(base);
}
@NonNull
@Override
public String process(@NonNull String destination) {
String out = destination;
if (base != null) {
try {
final URL u = new URL(base, destination);
out = u.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
return out;
}
@Nullable
private URL obtain(String base) {
try {
return new URL(base);
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
}
}
}