我正在开发一个可访问的Android应用程序,人们将使用Explore by Touch和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>
Run Code Online (Sandbox Code Playgroud)
strings.xml中
<string name="forenameText">Forename</string>
<string name="forenameHint">Enter your forename here</string>
Run Code Online (Sandbox Code Playgroud)
TextView显示标题"Forename",EditText允许我在表单字段中输入一些细节.我遇到的问题是,当我通过触摸浏览将手指拖过屏幕时,TalkBack会选择TextView的标题并将其大声宣布为"Forename".我希望TextView只显示文本而不提供任何声音反馈.
我已经将contentDescription设置为@null,正如您从上面的代码中看到的那样,但当我的手指位于TextView上时,TalkBack仍会宣布"Forename".
我也尝试在我的Java类中设置contentDescription:
TextView forename=(TextView)findViewById(R.id.forename);
forename.setContentDescription("");
Run Code Online (Sandbox Code Playgroud)
但是,我仍然遇到同样的问题.有没有其他方法将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; …
Run Code Online (Sandbox Code Playgroud) 我有以下XML文件存储电影和演员的详细信息:
<database
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="movies.xsd">
<movies>
<movie movieID="1">
<title>Movie 1</title>
<actors>
<actor actorID="1">
<name>Bob</name>
<age>32</age>
<height>182 cm</height>
</actor>
<actor actorID="2">
<name>Mike</name>
</actor>
</actors>
</movie>
</movies>
</database>
Run Code Online (Sandbox Code Playgroud)
如果actor
元素包含多个子元素(在这种情况下是它的名称,年龄和高度),那么我想将其名称显示为超链接.
但是,如果actor
元素只包含一个子元素(名称),则它应显示为纯文本.
XSLT:
<xsl:template match="/">
<div>
<xsl:apply-templates select="database/movies/movie"/>
</div>
</xsl:template>
<xsl:template match="movie">
<xsl:value-of select="concat('Title: ', title)"/>
<br />
<xsl:text>Actors: </xsl:text>
<xsl:apply-templates select="actors/actor" />
<br />
</xsl:template>
<xsl:template match="actor">
<xsl:choose>
<xsl:when test="actor[count(*) > 1]/name">
<a href="actor_details.php?actorID={@actorID}">
<xsl:value-of select="name"/>
</a>
<br/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="name"/>
<br/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,Bob应显示为超链接,并且Mike应显示为纯文本.但是,我的页面将Bob和Mike显示为纯文本.
我正在尝试更改AlertDialog
邮件的字体大小.
Button submit = (Button) findViewById(R.id.submitButton);
submit.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(
Application1GoodExample.this);
builder.setMessage("Your form has been successfully submitted");
TextView textView = (TextView) findViewById(android.R.id.message);
textView.setTextSize(40);
builder.setNegativeButton("Exit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
}
});
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息,指出findViewById()
该类型未定义" " AlertDialog.Builder
.
当用户按下屏幕上的按钮时,我试图自动将SMS消息发送到某个号码.
这是我的代码:
Intent smsIntent = new Intent(Intent.ACTION_SENDTO,
Uri.parse("sms:xxxxxxxxxxx"));
smsIntent.putExtra("sms_body", "Hello");
startActivity(smsIntent);
Run Code Online (Sandbox Code Playgroud)
xxxxxxx =电话号码
我有以下权限:
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
Run Code Online (Sandbox Code Playgroud)
当我按下按钮时,它会转到另一个屏幕,在那里我可以编辑我的文本并按发送.我只是想让它自动完成这个过程,而不会把我带到另一个屏幕.由于我已经定义了我的消息,我只想将其发送给特定的号码.
此外,我不确定是否将更正的电话号码放在第二行代码中.我是否必须首先将我的国家/地区代码放在那里,或者我可以只放我的手机号码,它会起作用吗?
谢谢
我在屏幕上显示以下项目:
EditText Forename
Spinner gender selection (Male | Female)
EditText Email
Run Code Online (Sandbox Code Playgroud)
首次启动应用程序时,我希望在Forename EditText上设置焦点.然后在Spinner中选择"Male"或"Female"之后,我希望在位于微调器下方的Email EditText上设置焦点.
我曾经在电子邮件EditText上setOnItemSelectedListener
设置requestFocus
,但问题是每当我启动应用程序时它会自动设置焦点在这个EditText上.这是因为默认情况下,微调器显示第一个选择,在这种情况下是"男性",因此它认为已经进行了选择并将焦点设置在"电子邮件"字段上.
我不介意默认情况下已经在微调器中选择了第一个选项,但是如果我可以以某种方式覆盖requestFocus
要在Forename EditText上设置的那个很棒.
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">
<EditText
android:id="@+id/ForenameForm"
android:layout_width="285dp"
android:layout_height="65dp"
android:hint="@string/forenameHint"
android:lines="1"
android:singleLine="true"
android:textSize="20sp" >
</EditText>
<Spinner
android:id="@+id/SpinnerGender"
android:spinnerMode="dialog"
android:textSize="30sp"
android:layout_width="285dp"
android:layout_height="60dp"
android:prompt="@string/spinnerGender"
android:entries="@array/genderList">
</Spinner>
<EditText
android:id="@+id/EmailForm"
android:layout_width="285dp"
android:layout_height="65dp"
android:hint="@string/emailHint"
android:lines="1"
android:singleLine="true"
android:textSize="20sp" >
</EditText>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
活动类:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText forename=(EditText)findViewById(R.id.ForenameForm);
forename.requestFocus();
final EditText email=(EditText)findViewById(R.id.EmailForm);
Spinner spinner=(Spinner)findViewById(R.id.SpinnerGender);
spinner.setFocusable(true);
spinner.setFocusableInTouchMode(true);
spinner.setOnItemSelectedListener(new …
Run Code Online (Sandbox Code Playgroud) 当我按下"提交"按钮时,我正在尝试显示AlertDialog.
Button submit = (Button) findViewById(R.id.submitButton);
submit.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(Application1GoodExample.this);
builder.setMessage("Your form has been successfully submitted");
TextView textView = (TextView) findViewById(android.R.id.message);
textView.setTextSize(40);
builder.setNegativeButton("Exit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
} });
builder.show();
}
});
Run Code Online (Sandbox Code Playgroud)
我相信这与它试图访问有关 findViewById(android.R.id.message)
我在XML文件中定义了TextView,如下所示:
<TextView android:id="@+id/message"
android:layout_width="285dp"
android:layout_height="78dp"
android:textColor="#000000"
android:textSize="45sp"
android:gravity="center"
/>
Run Code Online (Sandbox Code Playgroud)
我只想更改默认的AlertDialog消息"您的表单已成功提交"字体大小,但是当我按下"提交"按钮时我的程序崩溃了