前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

TextViewとandroid:autolinkの話

課題

TextViewにandroid:autolinkを設定すると、TextView内に記述されたURLは電話番号などを自動的にリンク化して
クリック可能にしてくれる。これは便利で良いのだけれど、文末がリンクで終わっていたりすると
TextViewのwidthがmatch_parentだったりした場合に残りの余白すべてがリンクになってしまい、
余白部分のクリックをリンクが奪ってしまう(端末やバージョンによるかも)。

対策

対策としてはsetText()する際にスペースを最後に一文字足せばそこでリンクが切れるのだけど、
それをautolinkしてるTextViewに全部やるのもちょっと面倒だな。

課題2

Android6系の端末でautolink="web"の認識に問題があり、ピリオドを含むテキストがリンクと勘違いされてしまう
ケースがある。

対策

LinkifyCompatと PertternsCompat.AUTOLIN_WEB_URLを使って明示することで対応する。
PertternsCompat.WEB_URLだと問題が治らないので注意

    public static void toAutoLinkText(TextView view, String text) {
        view.setText(String.format("%s ", text)); //余白がタップされても良いように
        String[] schemas = {"https://","http://"};
        LinkifyCompat.addLinks(view, PatternsCompat.AUTOLINK_WEB_URL,"https://", schemas,null,null);
    }