2010-10-17 13 views
8

come rimuovere la messa a fuoco dalla voce di menu Opzioni? Cioè quando apro il menu per la prima volta, nessuno degli elementi è attivo. tuttavia, se mi concentro su uno di essi utilizzando la track ball, quindi chiudo e riapre il menu, la messa a fuoco è ancora lì. Come faccio a liberarmene?menu opzioni - rimozione della messa a fuoco dall'elemento

Sto cancellando e ricreando il menu in onPrepareOptionsMenu (dato che devo adeguarlo allo stato di attività corrente).

EDIT:

public boolean onPrepareOptionsMenu(Menu menu){ 
    menu.clear(); 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.my_menu, menu); 

    return true; 
} 
+2

Sei riuscito a trovare la soluzione a questo? – dropsOfJupiter

+1

Puoi pubblicare il codice per riprodurre il problema? Sarò felice di esaminarlo per te. È un problema interessante –

risposta

0

Una volta che si utilizza la trackball (o effettivamente premuto qualsiasi altro tasto sulla tastiera), si esce touch mode. Da quel momento in poi, ci sarà un punto di vista focalizzato (lo puoi vedere chiamando lo Activity.getCurrentFocus()). Questa modalità persiste fino a quando non tocchi di nuovo lo schermo, a quel punto si ritorna alla modalità tocco e quando si apre il menu nelle occasioni successive non ci sarà un oggetto focalizzato. Questo succede in ogni singola applicazione Android che ho visto con un menu.

Questa situazione esiste non solo per le voci del menu delle opzioni, ma anche per le viste nel layout. Una volta che lasci la modalità touch, non penso che ci sia un modo per inserirla di nuovo (e quindi rimuovere la messa a fuoco da tutte le viste) a meno che non tocchi lo schermo. Una soluzione che ho visto citata per rimuovere gli effetti visibili della messa a fuoco (quando non in modalità touch) è semplicemente assegnarla a un elemento che non è visibile. Potresti creare un'opzione di menu invisibile e focalizzarla quando vuoi cancellarla?

A meno che non si trovi il modo di programmare in modo programmabile, di accedere in modo affidabile alla modalità touch o di rimuovere la messa a fuoco da tutte le visualizzazioni (chiamando lo View.clearFocus() lo si passa a un'altra vista!), Questa potrebbe essere la soluzione migliore.

Problemi correlati