1

次の例に従って、警告ダイアログの TextView の HTTP リンクをクリック可能にしようとしましたが、機能しません。

TextView のリンクをクリック可能にするにはどうすればよいですか?

それを機能させる唯一の方法は、リンクのテキストを文字列に直接入れandroid:autoLink="web"て、TextView に入れることです。しかし、リンク全体を表示したくはありません。名前だけです。

私のダイアログが作成される場所は次のとおりです。

@Override
protected Dialog onCreateDialog(int id) {
    LayoutInflater factory = LayoutInflater.from(this);

    switch (id) {
    case DISCLAIMER:
            final View disclaimerView = factory.inflate(R.layout.disclaimer_dialog, null);
            final TextView dtv = (TextView) disclaimerView.findViewById(R.id.disclaimer_body);

            dtv.setText("v"+versionName+"\n\n\u00A9"+Calendar.getInstance().get(Calendar.YEAR)+" "+"Developer\n\n" +
                getString(R.string.alert_dialog_disclaimer_body));

            dtv.setMovementMethod(LinkMovementMethod.getInstance());                

            return new AlertDialog.Builder(MyActivity.this)                
                .setView(disclaimerView)
                .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                    }
                })
                .create();
    }

    return null;
}

ここにある私のTextViewは次のR.layout.disclaimer_dialogとおりです。

<TextView
    android:id="@+id/disclaimer_body"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="10dp"
    android:gravity="center"
    />

これが私の文字列リソースです:

<string name="alert_dialog_disclaimer_body">This application was developed and written by me.\n\nGraphs use AChartEngine licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.\n\nThe rest goes here.</string>
4

1 に答える 1

1

TextView.setText(CharSequence)のドキュメントでは、次のように説明されています。

TextView の文字列値を設定します。TextView は、XML リソース ファイル内のテキスト文字列で行うことができる HTML のような書式設定を受け入れません。文字列のスタイルを設定するには、android.text.style.* オブジェクトを SpannableString にアタッチするか、利用可能なリソース タイプのドキュメントで、XML リソース ファイルに書式設定されたテキストを設定する例を参照してください。

また、彼らの提案に従って、Formatting and Stylingでは、HTML マークアップを使用したスタイリングの見出しの下で、HTML マークアップとフォーマット コードの両方を使用する方法について説明しています。

あなたの状況で最も簡単な方法は、レイアウトを調整して、既に使用している 1 つのビューに著作権表示を配置し、2 つ目のビューに以下の免責事項を配置してそのままにしておくことです。

<TextView
    android:id="@+id/disclaimer_body"
    android:text="@string/alert_dialog_disclaimer_body"
    ...
    />
于 2012-06-29T04:37:01.803 に答える