6

Android:autoLink="web" の TextView があります。テキストにはいくつかの URL が含まれています。

例:
http://example.com/

ただし、レンダリングすると、名前スキームとドメイン名がリンクされますが、ルート パスは無視されます。

レンダリング例:
http://example.com /

なぜこれを行うのですか? また、完全修飾 URL を適切に自動リンクするにはどうすればよいですか?

編集: また、フルストップまたはコンマが続く URL:
http://example.com/

次のようにレンダリングされています:
http://example.com/,

StackExchange が正しく自動リンクすることに注意してください (この質問のソースを参照してください)。

編集:サム、これはコードです:

        <TextView android:id="@+id/open_source"
            android:text="@string/open_source"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#FFF"
            android:paddingBottom="10dp"
            android:autoLink="web" />

いくつかのテキスト:

<string name="open_source">Three examples, fully qualified http://isokeys.sourceforge.net/ missing root path http://isokeys.sourceforge.net and followed with a fullstop http://isokeys.sourceforge.net/.</string>

次のようにレンダリングする必要があります:
3 つの例、完全修飾http://isokeys.sourceforge.net/ルート パスhttp://isokeys.sourceforge.netがなく、フルストップhttp://isokeys.sourceforge.net/が続きます。

次のように表示されます:
3 つの例、完全修飾http://isokeys.sourceforge.net / ルート パスが欠落しているhttp://isokeys.sourceforge.net 、フルストップ http://isokeys.sourceforge.net/が続きます。

4

1 に答える 1

1

1) autoLink
を「web」に設定すると、Android はバックグラウンドで android.text.util パッケージのツールを使用して、View オブジェクトのテキストに含まれるアクション可能なアイテムを探します。デフォルトでは、android.text.util.Linkify は有効な URL と無効な URL について独自の意見を持っています (正規表現マッチングに基づく)。末尾にスラッシュまたはコンマを追加した URL を本当に使用したい場合は、独自の正規表現を使用して独自の MatchFilter を実装できます。ドキュメンテーションは、Android デベロッパー サイトのこちらにあります。
2) 末尾のスラッシュは、リソースの階層内の位置を示すために使用されるため、標準の URL では実際には意味がありませんが、スラッシュの後に何もない場合は、別のレベルに移動していません。階層。コンマまたはピリオドを追加することは、階層内のリソースの場所を特定するのに役立たないため、有効な URL 構文であってはなりません。そのため、Android のマッチング用の正規表現はそれを無視して、リンクを操作しようとしたときに MalformedURLException が発生しないようにしていると思います。

于 2012-05-15T20:31:13.207 に答える