小编Ale*_*lex的帖子

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

我正在开发一个可访问的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)

android accessibility textview talkback

11
推荐指数
3
解决办法
2万
查看次数

XSLT - 使用XPath计算子元素的数量

我有以下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(*) &gt; 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显示为纯文本.

xml xslt xpath count

11
推荐指数
1
解决办法
6万
查看次数

更改AlertDialog消息的字体大小

我正在尝试更改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.

fonts android android-ui android-alertdialog

8
推荐指数
1
解决办法
2万
查看次数

Android点击按钮时自动发送短信

当用户按下屏幕上的按钮时,我试图自动将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)

当我按下按钮时,它会转到另一个屏幕,在那里我可以编辑我的文本并按发送.我只是想让它自动完成这个过程,而不会把我带到另一个屏幕.由于我已经定义了我的消息,我只想将其发送给特定的号码.

此外,我不确定是否将更正的电话号码放在第二行代码中.我是否必须首先将我的国家/地区代码放在那里,或者我可以只放我的手机号码,它会起作用吗?

谢谢

java sms android send android-intent

7
推荐指数
1
解决办法
4万
查看次数

Android - 在Spinner选择之后将焦点设置在EditText上

我在屏幕上显示以下项目:

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)

xml android focus spinner android-edittext

6
推荐指数
1
解决办法
1万
查看次数

Android按钮onClick显示AlertDialog应用程序崩溃

当我按下"提交"按钮时,我正在尝试显示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消息"您的表单已成功提交"字体大小,但是当我按下"提交"按钮时我的程序崩溃了

fonts alert android message dialog

0
推荐指数
1
解决办法
242
查看次数