4

次のコードを使用してTextViewリンクのように表示し、ユーザーがクリックするとAlertDialog. しかし、ユーザーがダイアログを離れた後もテキストが選択されたままになり、見た目が悪くなります。

    TextView terms = (TextView)findViewById(R.id.TextViewTerms);
    terms.setMovementMethod(LinkMovementMethod.getInstance());
    Spannable spanTerms = (Spannable)terms.getText();
    ClickableSpan clickSpan = new ClickableSpan()
    {
        @Override
        public void onClick(final View view)
        {
            new AlertDialog.Builder(AboutActivity.this)
                .setTitle(R.string.title_terms)
                .setMessage(R.string.terms_of_use)
                .setCancelable(true)
                .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int which)
                    {
                        dialog.dismiss();
                    }
                })
                .show();
        }
    };

    spanTerms.setSpan(clickSpan, 0, spanTerms.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

私も電話をかけてみましsetSelected(false)たが、それもうまくいきません。何か案は?

4

4 に答える 4

3

ダイアログのメソッドSelection.setSelection(spanTerms, 0);内に追加するだけです。onClick

于 2013-10-07T20:14:05.640 に答える
0

カスタム TextView を介してこれを行うことができます。基本的に、ビューが押された状態の場合にのみ強調表示を有効にします。

@Override
public void setPressed(boolean pressed) {
    if (pressed) {
        setHighlightColor(ContextCompat.getColor(getContext(), R.color.highlight_color));
    } else {
        setHighlightColor(Color.TRANSPARENT);
    }
    super.setPressed(pressed);
}
于 2019-02-14T18:57:52.400 に答える