10

我有一个问题声明,我需要在启用辅助功能设置的情况下运行我的应用程序,以获得反馈反馈,但这里的问题是,当我单击TextView其中包含 Spannable 链接的某个链接时,它会读取全文但不允许我在禁用可访问性的同时单独单击该 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);
4

4 回答 4

6

如果您使用的是 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
于 2019-07-25T19:36:10.077 回答
0

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

如此处所述:可点击链接(Google 支持)

您必须通过local context menu激活任何可点击的跨度Swiping up and then right,然后点击Links子菜单。

希望这可以帮助 :)

于 2019-06-03T17:21:01.900 回答
0

无事可做。只需用两根手指在屏幕上单击 Spannable 链接,其中之一必须在 Spannable 链接上。多试几次!!!</p>

于 2020-06-11T10:35:01.247 回答
0

试试这个,对我有用。另一种工作解决方案。

private void setUpBottomSheetAccessibility() {
    ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() {

        @Override
        public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
            if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_LONG_CLICKED) {
                //Put your work to be done on double click;
            }
            super.onPopulateAccessibilityEvent(host, event);
        }
    });
}

上面的代码视图是您的 Textview 或任何视图。这个事件在双击时起作用。

在我的最后工作正常。

于 2021-12-29T13:26:06.487 回答