2015-08-11 21 views
9

Ho controllato con tutte le finestre di dialogo di avviso predefinite tramite Android TalkBack. Il comportamento predefinito di Android Talkback è che legge tutti i contenuti (non stop) nella finestra di dialogo. C'è un modo in cui posso personalizzarlo in base alle mie esigenze. Per esempio:Personalizza Android Talkback in Alert Dialogue?

AlertDialog alertDialog = new AlertDialog.Builder(AlertDialogActivity.this).create(); 
alertDialog.setTitle("Alert Dialog"); 
alertDialog.setMessage("This is my alert dialog"); 
alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     Toast.makeText(getApplicationContext(), "You clicked on OK", Toast.LENGTH_SHORT).show(); 
    } 
}); 

alertDialog.show(); 

Quando appare la finestra, si legge automaticamente "Il dialogo Alert Questo è il mio dialogo avviso OK..." Ma io voglio controllarlo, come dovrebbe leggere solo "Alert Dialogue" o "This is my alert dialogue" ecc.

E mentre si tocca "OK" legge solo "OK", invece "Pulsante OK".

risposta

1

Se ho capito bene ciò che si vuole, è possibile implementare una finestra di dialogo avviso personalizzato, ad esempio, come si è fatto here, pertinenti codeSample:

final Dialog dialog = new Dialog(context); 
dialog.setContentView(R.layout.dialog); 
dialog.setTitle("Android Custom Dialog Box"); 
TextView txt = (TextView) dialog.findViewById(R.id.txt); 
txt.setText("This is an Android custom Dialog Box Example! Enjoy!"); 
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButton); 
     dialogButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
      } 
     }); 

dialog.show(); 

e quindi impostare il testo che si desidera leggere da TalkBack su le visualizzazioni di tua scelta con View.setContentDescription(text)

+0

Ho provato questo, ma la voce sta leggendo l'intero alertbox comunque – Onheiron

+2

Ciao @Templerschaf, legge la descrizione del contenuto del pulsante. Grazie per quello. Ma non posso accettare questa risposta poiché è parzialmente corretta. Una volta aperto il dialogo, legge automaticamente il contenuto. Devo personalizzare anche questo. – Tauqir

+1

È possibile [silenziare] (http://stackoverflow.com/a/16469954/3309562) elementi con View.setContentDescription ("\ u00A0") e si può forzare la lettura da parte di [spostamento dello stato attivo] (http://stackoverflow.com/a/13303106/3309562) con View.sendAccessibilityEvent (AccessibilityEvent.TYPE_VIEW_FOCUSED) – Templerschaf