How to make spannable text clickable with Accessibility mode on

时间秒杀一切 提交于 2019-12-10 13:57:24

问题


I have a problem statement where i need to run my application with Accessibility setting on, to have talk back feedback, but the problem here is when i click on a TextView which have Spannable link in it, then it reads the full text but dose not allow me to click on that Spannable text separately while disabling the accessibility allows to make string multi spannable or link clickable.

here is my code to make String clickable :

SpannableString ss = new SpannableString("Android is a Software stack");
ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View textView) {
        startActivity(new Intent(MyActivity.this, NextActivity.class));
    }
    @Override
    public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
        }
};
ss.setSpan(clickableSpan, 22, 27, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

TextView textView = (TextView) findViewById(R.id.hello);
textView.setText(ss);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setHighlightColor(Color.TRANSPARENT);

回答1:


I'm afraid there is no way in android to implement that (I had the same issue for months). the only way is using the local context menu. Looks like Talkback is trying to make the ADA users to get use to the menus using there gestures, which will fix too many issue in our dev side. There might be another way, which is creating a WebView and then add html elements which will handle everything, BUT this will be bad for the app performance :(

As mentioned here: Clickable links (Google support)

you have to access local context menu to activate any clickable span by Swiping up and then right, and then click on Links submenu.

Hope this helps :)




回答2:


If you are using Android X library you should be able to handle accessibility and clickable spannable strings by:

ViewCompat.enableAccessibleClickableSpanSupport(yourView);

Also make sure you have the latest dependency:

com.android.support:appcompat-v7:28.0.0

It should work back to API 19.

Note: To enable Android X library go to your gradle.properties and add these lines:

android.useAndroidX = true
android.enableJetifier = true


来源:https://stackoverflow.com/questions/42206928/how-to-make-spannable-text-clickable-with-accessibility-mode-on

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!