如何使用“辅助功能”模式使可跨越文本可单击

时间:2017-02-13 14:52:09

标签: android textview spannablestring android-accessibility accessibility-api

我有一个问题陈述,我需要在启用“辅助功能”设置的情况下运行我的应用程序,以获得对话反馈,但问题是当我点击其中包含Spannable链接的TextView时,然后它读取全文,但不允许我单独单击该Spannable文本,而禁用辅助功能允许我使字符串多字节或链接可点击。

这是我的代码String可点击:

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);

3 个答案:

答案 0 :(得分:0)

恐怕在android中没有办法实现它(我几个月都遇到过同样的问题)。唯一的方法是使用本地上下文菜单。看来,Talkback正在尝试使ADA用户使用那里的手势来使用菜单,这将解决我们开发人员方面的太多问题。可能还有另一种方法,即创建一个WebView,然后添加将处理所有内容的html元素,但这对应用程序性能不利:(

如此处所述:Clickable links(Google支持)

您必须访问local context menu才能激活Swiping up and then right的任何可点击范围,然后单击Links子菜单。

希望这会有所帮助:)

答案 1 :(得分:0)

如果您使用的是Android X库,则应该能够通过以下方式处理可访问性和可点击的跨度字符串:

ViewCompat.enableAccessibleClickableSpanSupport(yourView);

还要确保您具有最新的依赖项:

com.android.support:appcompat-v7:28.0.0

它应该可以使用API​​ 19。

注意:要启用 Android X 库,请转到您的 gradle.properties 并添加以下行:

android.useAndroidX = true
android.enableJetifier = true

答案 2 :(得分:0)

无需执行任何操作。只需在屏幕上用两根手指单击Spannable链接,并且其中一根手指必须在Spannable链接上。尝试一下!!!