Марквон не обрабатывает ссылки - PullRequest
0 голосов
/ 15 января 2019

Я использую библиотеку 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;
        }
    }
}

1 Ответ

0 голосов
/ 13 марта 2019

Рад, что вы решили свою проблему. Для всех, кто преследует этого кролика, установка LinkMovementMethod в моем TextView работает для меня.

myTextView.movementMethod = LinkMovementMethod.getInstance()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...