2010-11-02 14 views
5

Voglio sviluppare una tastiera sostitutiva, ma temo che Android assuma che l'area generale della tastiera sia una singola forma rettangolare che si trova nella parte inferiore dello schermo.Come creare una tastiera Android su schermo che non sia un rettangolo nella parte inferiore dello schermo?

Cosa succede se la mia tastiera è composta da più forme che non si limitano a sedersi nella parte inferiore dello schermo? Sono condannato fin dall'inizio, o è possibile fare ciò che voglio fare?

Su una nota correlata, cosa succede se desidero che la mia tastiera venga visualizzata solo quando il telefono è orientato in un determinato orientamento ma quando il telefono è tenuto con un orientamento diverso, viene utilizzata la normale tastiera virtuale? Di nuovo, sfortunato o possibile?

evviva!

+0

Mi scuso se sei davvero "caldo per creare" una tastiera Android sostitutiva. :) Interessante domanda, a proposito. – MusiGenesis

+0

mwah ah ah, io sono ma accetto la tua modifica! –

risposta

4

L'IME è solo una finestra. È posizionato rispetto alla parte inferiore dello schermo, quindi non è possibile controllarlo. Ma puoi disegnare qualunque cosa tu voglia in esso, o non per i luoghi che vuoi essere trasparenti. Puoi controllare quante applicazioni si spostano dal tuo IME con questo: http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html#onComputeInsets(android.inputmethodservice.InputMethodService.Insets)

Android non consente a Windows di decidere una alla volta se gli eventi verranno gestiti da loro o inviati alla finestra dietro di essi; l'unico controllo che è necessario mantenere gli eventi dall'intera finestra è rappresentato dalle costanti Insets.touchableInsets per indicare al gestore di finestre di consentire che eventi al di fuori degli insiemi specificati passino a ciò che si trova dietro.

+0

Ciao, grazie Hackbod, questo è quello di cui avevo paura. Almeno dal mio punto di vista, sarebbe bello se potessi creare una finestra di tastiera - o per quella questione finestre fluttuanti per qualsiasi tipo di scopo - che potrebbe apparire su qualsiasi lato dello schermo, e restringere il spazio disponibile per l'Attività sottostante all'area che non sovrascrivono. –

+0

Questa è una soluzione lunga, ma sarebbe possibile utilizzare un'attività a schermo intero trasparente come IME falso? Invia qualsiasi carattere digitato nell'attività immediatamente al di sotto di esso? O puoi pensare ad un altro modo per hackerare ciò che voglio? –

+0

OK, vedo il bit nel tuo link su IME a schermo intero. Suppongo che questo mi consenta di fare tecnicamente ciò che voglio fare, senza l'interazione al volo sottostante con l'attività sottostante. Quest'ultima parte potrebbe essere un pestaggio, è difficile dirlo senza provarlo per vedere che cosa è. –

0

Presumibilmente è possibile creare un rettangolo dove si desidera e renderlo trasparente. Non sei sicuro di come passare gli eventi dell'interfaccia utente all'attività sotto la tua tastiera.

In ogni caso, c'è uno softkeyboard sample che sarà probabilmente Abbastanza utile.

Come vedo, ci sono due modi per gestire l'UI Thing. - Passa gli eventi all'attività sottostante quando "devono passare" ... Poiché la tua softkey potrebbe avere un proprio processo, questo potrebbe risultare un po 'spinoso. - Crea la tua tastiera su più di una regione rettangolare, in modo che gli eventi dell'interfaccia utente passino naturalmente. Non sono sicuro che sia possibile. Sono ancora abbastanza nuovo per lo sviluppo Android me stesso.

+0

La mia comprensione è che le attività sono a schermo intero e che la tastiera e alcune altre cose come questa non sono altro che Attività. Questi 'qualcosa di diverso' sono progettati per funzionare in cima a Attività in modo che l'area che non nascondono sia utilizzabile. –

+0

TUTTAVIA: questi "qualcosa di diverso dalle attività" devono essere un rettangolo nella parte inferiore dello schermo? Poiché si nota quando viene visualizzata la tipica tastiera virtuale, spinge le caselle di immissione del testo verso l'alto in modo che siano visibili nella metà superiore dello schermo non coperta dalla tastiera. Se non desidero che le mie parti della tastiera appaiano in basso, come funziona quell'interazione con i campi di input sottostanti? Gli sviluppatori di Android hanno fatto delle ipotesi sulla forma della tastiera e sul posizionamento che rendono la forma e il posizionamento non predefiniti impraticabili/impossibili? –

Problemi correlati