[英]accessibility on textview
我是 android 开发的新手。 我开始进行 android 辅助功能工作,以使盲人可以访问 android 应用程序。 我制作了简单的登录表单并设置了可访问性属性,例如内容描述和焦点等我打开回复并检查它。
here is code activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/usernm_text"
android:id="@+id/username"
android:contentDescription="@string/usernm_text"
android:focusable="true"
android:nextFocusDown="@+id/usr_nm"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/usr_nm"
android:contentDescription="@string/usernm_text"
android:focusable="true"
android:text="admin"
android:nextFocusDown="@+id/password"
android:nextFocusUp="@id/usr_nm"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/pass_text"
android:id="@+id/password"
android:focusable="true"
android:nextFocusDown="@+id/pass_edit"
android:contentDescription="@string/pass_text"
android:nextFocusUp="@id/usr_nm"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/pass_edit"
android:contentDescription="@string/pass_text"
android:text="admin"
android:focusable="true"
android:nextFocusDown="@+id/login"
android:nextFocusUp="@id/password"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/login_btn"
android:onClick="log"
android:id="@+id/login"
android:contentDescription="@string/login_btn"
android:focusable="true"
android:nextFocusUp="@id/pass_edit"
android:accessibilityLiveRegion="polite" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/log_succ"
android:focusable="true"
android:accessibilityLiveRegion="polite" />
</LinearLayout>
在我的 MainActivity.java
public class MainActivity extends AppCompatActivity {
EditText usr_nm;
TextView log_succ;
Button logs;
EditText pass_edit;
int counter=5;
String log_msg="login successful";
Button log_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
log_succ=(TextView) findViewById(R.id.log_succ);
usr_nm=(EditText) findViewById(R.id.usr_nm);
pass_edit=(EditText)findViewById(R.id.pass_edit);
}
public void log(View view) {
if (usr_nm.getText().toString().equals("admin") &&
pass_edit.getText().toString().equals("admin")) {
log_succ.setText(log_msg);
log_succ.setContentDescription("Login successful");
// log_succ.isFocusable();
// Toast.makeText(MainActivity.this, "password is correct", Toast.LENGTH_LONG).show();
// Intent in = new Intent("com.example.samir.login_form.user_page");
// startActivity(in);
} else {
Toast.makeText(MainActivity.this, "password is incorrect", Toast.LENGTH_SHORT).show();
counter--;
if (counter == 0)
logs.setEnabled(false);
}
}
触摸它时通过对讲登录成功的textview提示。 我希望当我点击登录按钮时,应该立即通过对讲提示 textview“登录成功”。 我将 AccessibilityliveRegion 设置为“礼貌”。 我还应该做什么??
据我了解,您希望系统在用户登录后说出“登录成功”。
您可以使用TextToSpeech
类来实现这一点。
首先声明一个TextToSpeech
对象(一个全局/类变量):
TextToSpeech tts;
然后将其设置为在登录过程成功时实例化并发言:
tts = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(status == TextToSpeech.SUCCESS){
tts.setLanguage(Locale.US);
tts.speak("Login Successful", TextToSpeech.QUEUE_FLUSH, null);
}
}
});
另外,不要忘记在完成后释放资源:
@Override
protected void onPause() {
if(tts!=null){
tts.stop();
tts.shutdown();
}
super.onPause();
}
希望这可以帮助。
如果我们为 textview 设置 android:accessibilityLiveRegion="polite" ,这是可能的..谢谢您的回复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.