Как добавить состояние фокуса для ссылок в текстовом представлении
У меня есть диалоговое окно 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>
Вот скриншот:
1 ответ
Используйте 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
}
});