Android – 防止TalkBack大声宣布TextView标题

前端之家收集整理的这篇文章主要介绍了Android – 防止TalkBack大声宣布TextView标题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个可访问的 Android应用程序,人们将使用“探索触摸”和“话语提示”辅助功能来使用我的应用程序.

这是我的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>

strings.xml中

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

TextView显示标题“Forename”,EditText允许我在表单域中输入一些细节.我遇到的问题是当我
通过使用“触摸探索”将手指拖动到屏幕上,“话语提示”会拾取TextView的标题,并将其大声宣布为“Forename”.我希望TextView只显示文字,而不提供任何可听见的反馈.

我已经将contentDescription设置为@null,您可以从上面的代码中看到,但是当我的手指位于上方时,TalkBack仍然会宣布“Forename”
TextView中.

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

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

但是,我仍然遇到同样的问题.有没有其他方法设置contentDescription为空/空,并阻止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;
          }
        });
    }

}

解决方法

我试图在今天做同样的事情,并且可以像这样(使用不间断的空格)在TextView上设置一个“空的”contentDescription:
decorativeTextView.setContentDescription("\u00A0");

现在TalkBack对该TextView没有任何意义.

但是我同意Nick关于将标签留在您的情况下是可读的,因为只有空的EditTexts才能看到提示.

猜你在找的Android相关文章