Android - 阻止 TalkBack 大声宣布 TextView 标题

标签 android accessibility textview talkback

我正在开发一个可访问的 android 应用程序,人们可以在其中使用触摸浏览和 TalkBack 可访问性服务来使用我的应用程序。

这是我的 Android XML 代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout" 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/forename"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dip"
        android:layout_marginLeft="15dip"
        android:textSize="20sp"
        android:text="@string/forenameText" 
        android:contentDescription="@null"/>

    <EditText
        android:id="@+id/EditTextForename"
        android:layout_width="285dp"
        android:layout_height="65dp"
        android:layout_marginTop="10dip"
        android:layout_marginLeft="15dip"
        android:hint="@string/forenameHint"
        android:inputType="textPersonName"
        android:lines="1"
        android:singleLine="true"
        android:textSize="20sp" >
    </EditText>

</LinearLayout>

字符串.xml

<string name="forenameText">Forename</string>
<string name="forenameHint">Enter your forename here</string>

TextView 显示标题“Forename”,EditText 允许我在表单字段中输入一些详细信息。我的问题是当我 通过使用“触摸浏览”将我的手指拖过屏幕,TalkBack 会拾取 TextView 的标题并大声宣布它为“名字”。我希望 TextView 仅显示文本而不提供任何声音反馈。

我已将 contentDescription 设置为 @null,正如您从上面的代码中看到的那样,但是当我的手指位于 TextView 。

我还尝试在我的 Java 类中设置 contentDescription:

TextView forename=(TextView)findViewById(R.id.forename);
forename.setContentDescription("");

但是,我仍然遇到同样的问题。有没有其他方法可以将 contentDescription 设置为 null/empty 并防止 TalkBack 大声宣布它?

Java代码:

public class MainActivity extends Activity{

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        View forename = findViewById(R.id.forename);

        forename.setAccessibilityDelegate(new AccessibilityDelegate() {
          public boolean performAccessibilityAction (View host, int action, Bundle args){
            return true;
          }
        });
    }

}

最佳答案

自 API 16 起,Android 引入了以下内容:

android:importantForAccessibility="no"

setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO)

这允许开发人员针对某些 View 一起禁用对讲。

http://developer.android.com/reference/android/view/View.html

关于Android - 阻止 TalkBack 大声宣布 TextView 标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31997933/

相关文章:

java - 寻找模拟机针运动的物理模型

javascript - NVDA 屏幕阅读器无法与大型菜单键盘导航一起使用

android - 标签 : TextLayoutCache Text: Cache Value deleted

英文单词之间的安卓泰米尔字体

Android:WebView 在中心加载图像

android - 是否可以同时存在同一个库的两个不同版本?

android - 库/gdb 服务器错误 :Permission denied

ios - 什么使元素可访问?为什么点击手势比 UIButton 更难访问?我如何解决它?

accessibility - WCAG 是否处理空/冗余元素?

java - Linkify 的奇怪选择行为