Autore Topic: Tastiera solo numerica  (Letto 3420 volte)

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Tastiera solo numerica
« il: 05 Gennaio 2011, 11:54:24 CET »
0
Ho un'applicazione con degli EditText dove l'utente può inserire solo numeri
quindi volevo far comparire una tastiera che avesse solo numeri
La tastiera che più si avvicina alla mia idea è quella che si ottiene specificando come attributi dell'EditText i valori:

android:inputType="phone"
android:digits="1234567890"

ma su un htc desire oltre ai bottoni
1234567890
compaiono altri bottoni come le parentesi tonde e altri ancora
io vorrei implementare una tastiera mia personale che visualizzi SOLO numeri
mi potreste suggerire un'idea, una traccia, un tutorial o uno snippet da dove possa partire?

grazie

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Tastiera solo numerica
« Risposta #1 il: 05 Gennaio 2011, 12:49:21 CET »
+1
Ho un'applicazione con degli EditText dove l'utente può inserire solo numeri
quindi volevo far comparire una tastiera che avesse solo numeri
La tastiera che più si avvicina alla mia idea è quella che si ottiene specificando come attributi dell'EditText i valori:

android:inputType="phone"
android:digits="1234567890"

ma su un htc desire oltre ai bottoni
1234567890
compaiono altri bottoni come le parentesi tonde e altri ancora
io vorrei implementare una tastiera mia personale che visualizzi SOLO numeri
mi potreste suggerire un'idea, una traccia, un tutorial o uno snippet da dove possa partire?

grazie
ti fai una tabella di bottoni in stile telefono (3x3 + lo zero) e ad ogni touch su un determinato bottone (il cui label è il numero) aggiungi tale cifra al testo nell'editText. L'et lo metti non focusable cosi toccandolo non compare la tastiera, e aggiungi un bottone per cancellare l'ultimo digit (tipo il backspace) semplicemente eliminando la cifra in posizione editText.length - 1.
Spero tu abbia capito!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Tastiera solo numerica
« Risposta #2 il: 05 Gennaio 2011, 13:50:25 CET »
0
Nicola_D come faccio  a fare in modo che quando l'utente clicca su un EditText compaia la mia tastiera invece che quella di default del telefonino?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Tastiera solo numerica
« Risposta #3 il: 05 Gennaio 2011, 14:18:33 CET »
+1
Nicola_D come faccio  a fare in modo che quando l'utente clicca su un EditText compaia la mia tastiera invece che quella di default del telefonino?
Quello che nicola ti ha proposto non é un input method sostitutivo, ma una griglia di Button che non funziona come un input method. Infatti ti ha consigliato di togliere all'EditText di essere focusable.
Comunque al limite puoi mettere questa griglia in un layout che fai comparire solo quando c'é il click su un EditText cioé con un OnClickListener setti l'attributo Visible a View.VISIBLE. Poi quando devi farlo sparire lo setti a View.GONE
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Tastiera solo numerica
« Risposta #4 il: 05 Gennaio 2011, 14:52:23 CET »
+1
Quello che nicola ti ha proposto non é un input method sostitutivo, ma una griglia di Button che non funziona come un input method. Infatti ti ha consigliato di togliere all'EditText di essere focusable.
Comunque al limite puoi mettere questa griglia in un layout che fai comparire solo quando c'é il click su un EditText cioé con un OnClickListener setti l'attributo Visible a View.VISIBLE. Poi quando devi farlo sparire lo setti a View.GONE
esatto, perchè creare una nuova tastiera non è una cosa che si fa all'interno della tua app,ma è un'app a parte. Solo una cosa, usa un OnFocuslistener sull'editText, quando cambia il focus te fai:
if (hasFocus) visualizza la "tastiera" detta prima, con View.VISIBILE
else View.GONE

Io ho usato un trucchetto simile per delle griglie di file filtrate per utente che li ha caricati ;)
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Tastiera solo numerica
« Risposta #5 il: 05 Gennaio 2011, 16:05:45 CET »
0
ok ho disattivato il focus ai campi di tipo EditText della mia activity (ho 5 campi di tipo EditText)
ovviamente non compare più il cursore (la stanghezza verticale che lampeggia), io vorrei comunque farlo vedere
è possibile simularla senza dover dare il focus al campo

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Tastiera solo numerica
« Risposta #6 il: 05 Gennaio 2011, 16:15:52 CET »
0
ok ho disattivato il focus ai campi di tipo EditText della mia activity (ho 5 campi di tipo EditText)
ovviamente non compare più il cursore (la stanghezza verticale che lampeggia), io vorrei comunque farlo vedere
è possibile simularla senza dover dare il focus al campo

mmm mi sa di no... dovresti provare con cursorVisible ma è gia true di default...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Tastiera solo numerica
« Risposta #7 il: 05 Gennaio 2011, 16:26:03 CET »
0
ok allora la strada del campo non focusabile non va bene
c'è un modo per dire che quando un EditText ha il focus la tastiera non deve comparire?

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Tastiera solo numerica
« Risposta #9 il: 05 Gennaio 2011, 17:22:24 CET »
0
Avevo fatto la ricerca su google ed ero arrivato a questo post:
events - How to close/hide the Android Soft Keyboard? - Stack Overflow
ma i metodi suggeriti non funzionavano quando passavo da un EditText al successivo
mentre il link che mi hai fornito te ha due soluzioni, la prima non va bene perchè scompare il cursore, la seconda funziona
di seguito scrivo la mia soluzione:

Codice (Java): [Seleziona]
myEditText.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
            int inType = myEditText.getInputType(); // backup the input type
            myEditText.setInputType(InputType.TYPE_NULL); // disable soft input
            myEditText.onTouchEvent(event); // call native handler
            myEditText.setInputType(inType); // restore input type
            return true; // consume touch even
        }
});

thx


Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Tastiera solo numerica
« Risposta #10 il: 05 Gennaio 2011, 17:33:05 CET »
0
Avevo fatto la ricerca su google ed ero arrivato a questo post:
events - How to close/hide the Android Soft Keyboard? - Stack Overflow
ma i metodi suggeriti non funzionavano quando passavo da un EditText al successivo
mentre il link che mi hai fornito te ha due soluzioni, la prima non va bene perchè scompare il cursore, la seconda funziona
di seguito scrivo la mia soluzione:

Codice (Java): [Seleziona]
myEditText.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
            int inType = myEditText.getInputType(); // backup the input type
            myEditText.setInputType(InputType.TYPE_NULL); // disable soft input
            myEditText.onTouchEvent(event); // call native handler
            myEditText.setInputType(inType); // restore input type
            return true; // consume touch even
        }
});

thx
ottimo,se hai risolto perfavore marca il topic come risolto usando il pulsante apposito!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Tastiera solo numerica
« Risposta #11 il: 05 Gennaio 2011, 18:31:34 CET »
0
lo farò non ti preoccupare sol oche prima devo finire di implementare la mia tastiera numerica e se incontro delle difficoltà scrivo in questo topic senza doverne aprire un nuovo
appena ho finito lo chiudo come ho fatto per tutti gli altri stai tranquillo

domanda: per far apparire la mia tastiera con lo stesso effetto della tastiera del telefono (che appare scorrendo dal basso verso l'alto) come posso fare?
perch se uso view.setVisibility(true / false)
ottengo l'effetto che appare e scompare all'istante
io invece vorrei che apparisse come appare la tastiera normalmente

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Tastiera solo numerica
« Risposta #12 il: 05 Gennaio 2011, 18:36:14 CET »
0
lo farò non ti preoccupare sol oche prima devo finire di implementare la mia tastiera numerica e se incontro delle difficoltà scrivo in questo topic senza doverne aprire un nuovo
appena ho finito lo chiudo come ho fatto per tutti gli altri stai tranquillo

domanda: per far apparire la mia tastiera con lo stesso effetto della tastiera del telefono (che appare scorrendo dal basso verso l'alto) come posso fare?
perch se uso view.setVisibility(true / false)
ottengo l'effetto che appare e scompare all'istante
io invece vorrei che apparisse come appare la tastiera normalmente
intendi farla comparire "in movimento"? in questo caso devi fare un'animazione!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Tastiera solo numerica
« Risposta #13 il: 06 Gennaio 2011, 12:33:46 CET »
0
ok allora mi studierò come si fa a far scorrere un oggetto dal basso verso l'alto e poi lo applicherò alla mia tastiera
thx

Offline matpil

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi4c
  • Sistema operativo:
    Linux Mint 17.2 with Mate
Re:Tastiera solo numerica
« Risposta #14 il: 18 Novembre 2011, 14:59:29 CET »
0
Salve,
prima di aprire un nuovo topic, vedo se per caso ottengo risposte qui.

Ho avuto lo stesso problema di far comparire la tastiera solo numerica con in più il tasto "."

Ho risolto aggiungendo all'EditText:
        android:inputType="number"
        android:digits=".1234567890"

Il problema è che sul mio HTC Desire (rom Oxygen) e su un HTC Wildfire (rom Cyanogen 7.10) funziona perfettamente; su un Samsung Galaxy S la tastiera che appare è diversa ed in particolare manca il punto (essenziale per avere i numeri decimali). Questo galaxy è "originale"... nel senso che non è mai stato rootato; solo aggiornamenti OTA.

Da cosa può dipendere questo problema?

Grazie,
matpil
App pubblicate sul Market :Ticket counter