如何在启用辅助功能模式的情况下使可跨越的文本可点击
How to make spannable text clickable with Accessibility mode on
我有一个问题陈述,我需要 运行 我的应用程序打开辅助功能设置,以获得回话反馈,但这里的问题是当我单击具有 Spannable 的 TextView
link 在其中,然后它读取全文但不允许我单独单击该 Spannable 文本,同时禁用可访问性允许使字符串 multi spannable 或 link 可单击。
这是让 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);
恐怕 android 中没有办法实现它(几个月来我遇到了同样的问题)。唯一的方法是使用本地上下文菜单。看起来 Talkback 正试图让 ADA 用户使用那里的手势来使用菜单,这将解决我们开发方面的太多问题。可能还有另一种方法,即创建一个 WebView,然后添加 html 元素来处理所有事情,但这对应用程序性能不利:(
如此处所述:Clickable links(Google 支持)
您必须访问 local context menu
才能通过 Swiping up and then right
激活任何可点击范围,然后点击 Links
子菜单。
希望这对您有所帮助:)
如果您正在使用 Android X 库,您应该能够通过以下方式处理可访问性和可点击的 spannable 字符串:
ViewCompat.enableAccessibleClickableSpanSupport(yourView);
还要确保您拥有最新的依赖项:
com.android.support:appcompat-v7:28.0.0
它应该回到 API 19.
注意:要启用 Android X 库,请转到您的 gradle.properties 并添加以下行:
android.useAndroidX = true
android.enableJetifier = true
没有什么 do.Just 你用两根手指点击屏幕上的 Spannable link,其中之一必须在 Spannable link 上。多试几次!!!
试试这个,对我有用。替代工作解决方案。
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);
}
});
}
以上代码 view 是您的 Textview 或任何视图。并且此事件适用于双击。
在我这边工作正常。
我有一个问题陈述,我需要 运行 我的应用程序打开辅助功能设置,以获得回话反馈,但这里的问题是当我单击具有 Spannable 的 TextView
link 在其中,然后它读取全文但不允许我单独单击该 Spannable 文本,同时禁用可访问性允许使字符串 multi spannable 或 link 可单击。
这是让 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);
恐怕 android 中没有办法实现它(几个月来我遇到了同样的问题)。唯一的方法是使用本地上下文菜单。看起来 Talkback 正试图让 ADA 用户使用那里的手势来使用菜单,这将解决我们开发方面的太多问题。可能还有另一种方法,即创建一个 WebView,然后添加 html 元素来处理所有事情,但这对应用程序性能不利:(
如此处所述:Clickable links(Google 支持)
您必须访问 local context menu
才能通过 Swiping up and then right
激活任何可点击范围,然后点击 Links
子菜单。
希望这对您有所帮助:)
如果您正在使用 Android X 库,您应该能够通过以下方式处理可访问性和可点击的 spannable 字符串:
ViewCompat.enableAccessibleClickableSpanSupport(yourView);
还要确保您拥有最新的依赖项:
com.android.support:appcompat-v7:28.0.0
它应该回到 API 19.
注意:要启用 Android X 库,请转到您的 gradle.properties 并添加以下行:
android.useAndroidX = true
android.enableJetifier = true
没有什么 do.Just 你用两根手指点击屏幕上的 Spannable link,其中之一必须在 Spannable link 上。多试几次!!!
试试这个,对我有用。替代工作解决方案。
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);
}
});
}
以上代码 view 是您的 Textview 或任何视图。并且此事件适用于双击。
在我这边工作正常。