Как добавить состояние фокуса к ссылкам в текстовом представлении - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть диалоговое окно Eula, которое содержит текстовое представление, в котором я добавляю ссылки, чтобы ссылки распознавались в текстовой строке.Я использую навигацию dpad и мне нужны ссылки, чтобы выделить их.Есть ли способ добавить состояние в ссылки на Focus?Можно ли направить фокус на положительные и отрицательные кнопки тоже?Вот метод:

 public static boolean show(final Activity activity) {
        final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
        if (!preferences.getBoolean(ACCUWX.Preferences.PREFERENCE_EULA_ACCEPTED, false)) {
         final TextView message = new TextView(activity);
         final SpannableString s = preferences.getString(ACCUWX.Preferences.PREF_PARTNER_CODE, null).equals(ACCUWX.PartnerCodes.TMOBILE_PARTNER_CODE) 
            || preferences.getString(ACCUWX.Preferences.PREF_PARTNER_CODE, null).equals(ACCUWX.PartnerCodes.TMOBILE_7_PARTNER_CODE)?
                 new SpannableString(activity.getText(R.string.eula_terms_info_tmobile))
                    : new SpannableString(activity.getText(R.string.eula_terms_info));
         Linkify.addLinks(s, Linkify.WEB_URLS);
         message.setPadding(10, 10, 10, 10);
         message.setText(s);
         message.setMovementMethod(LinkMovementMethod.getInstance());

            if (ad == null) {
                ad = new AlertDialog.Builder(activity)
                .setTitle(R.string.terms_conditions)
                .setCancelable(false)
                .setPositiveButton(R.string.agree, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        accept(preferences);
                        if (activity instanceof OnEulaAgreedTo) {
                            ((OnEulaAgreedTo) activity).onEulaAgreedTo();
                        }
                    }
                })
                .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        refuse(activity);
                    }
                })
                .setOnCancelListener(new DialogInterface.OnCancelListener() {
                    public void onCancel(DialogInterface dialog) {
                        refuse(activity);
                    }
                })

                .setView(message)
                .create();

                ad.show();
            }

            return false;
        }
        return true;
    }

Я не могу понять, как добавить состояние для ссылок, которые находятся внутри txt, а не для отдельного собственного представления.

***** РЕДАКТИРОВАТЬ ***** Если я добавлю эту строку кода: message.setLinkTextColor (R.color.link_text);тогда мои ссылки не видны.Но это говорит мне, что это по крайней мере признание ссылок.Вот примененный ColorStateList (link_text.xml), сохраненный в res / color:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="#ff0000"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#ff33ff"/> <!-- focused -->
    <item android:color="#00ff00"/> <!-- default -->
</selector>

Вот скриншот: enter image description here

1 Ответ

0 голосов
/ 07 декабря 2011

Используйте OnFocusChangeListener, поэтому:

TextView mTextView = new TextView(this);
mTextView.setOnFocusChangeListener(new OnFocusChangeListener(){

    @Override
    public void onFocusChange(View arg0, boolean arg1) {
        // Add your code for the focus change of the textview

    }

});
...