0
我有一個Eula對話框,其中包含一個textview,我在其中添加鏈接以便可以在文本字符串中識別這些鏈接。我正在使用dpad導航,並需要鏈接才能突出顯示重點是否在他們身上。有沒有辦法給onFocus上的鏈接添加一個狀態?我可以直接將焦點對準正面和負面的按鈕嗎?下面是方法:如何將焦點狀態添加到文本視圖中的鏈接
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應用存儲在res /顏色(link_text.xml):
<?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>
下面是截圖:
但我怎麼只添加狀態的鏈接,而不是textview中的所有文字? – taraloca
我做了上面的一些成功。我現在的問題是,我有一個文本視圖中的3個鏈接...我怎麼分開知道我專注於哪一個?在onFocusChange方法中,我做if(hasFocus)message.setLinkTextColor(Color.MAGENTA);如果不是message.setLinkTextColor(Color.BLUE);當我從「我同意」按鈕進入文本視圖時,所做的就是更改所有鏈接的顏色。我想在每個單獨的鏈接上顯示。 – taraloca
我認爲您的解決方案是創建三個單獨的文字瀏覽,如果您不希望所有三個鏈接一次突出顯示,並且您不希望與它們相關的相同操作。 – coder