2010-01-06 6 views
3

Je souhaite afficher un champ de saisie personnalisé (en particulier, un champ contenant uniquement 9-0 et deux boutons supplémentaires contenant un séparateur décimal (, ou.) Et un bouton de suppression).Champ de saisie avec méthode de saisie personnalisée

Je pourrais créer un IME personnalisé, mais (pour autant que je sache) qui devrait être défini par l'utilisateur comme la méthode d'entrée à l'échelle du système. Existe-t-il un moyen d'implémenter une méthode de saisie et de la lier à un champ de saisie spécifique?

Merci pour l'aide!

Répondre

1

Je pense que vous avez raison de dire que vous ne pouvez pas avoir un IME personnalisé que vous n'utilisez que pour des champs spécifiques de votre application. Il aurait été allumé globalement par l'utilisateur. Quoi que vous fassiez, assurez-vous d'avoir un InputFilter adapté à la méthode de saisie personnalisée dont vous avez besoin pour restreindre l'entrée d'un clavier matériel.

Comme vous avez défini android:inputType pour le champ cela va ajouter un InputFilter approprié automatiquement et il sera également tell whatever IME is selected to display appropriate input buttons. Pour la valeur par défaut Android IME tout cela ne fait qu'afficher la page numérique plutôt que la page alphabétique première:

alt text

+0

J'ai accompli la même chose en définissant l'option android: inputType = "numberDecimal" dans le fichier .xml. Le problème est que vous pouvez voir deux rangées de lettres et seulement une rangée de minuscules chiffres - et cela peut tout à fait vider l'expérience de l'utilisateur. Donc, je voudrais vraiment que l'utilisateur ne voit que les chiffres, le séparateur et une sorte de bouton de suppression, même que sur toutes les calculatrices des années 80 :) – LambergaR

+0

Je vois votre point de vue. Dans ce cas, pourquoi ne pas simplement ajouter quelques boutons dans un GridLayout et désactiver le clavier à l'écran par défaut. Cela ressemblerait encore plus à une calculatrice de la vieille école. –

+0

C'est essentiellement ce que j'ai fait (je plante une superposition avec les boutons). Mais, puisqu'il y a plus qu'une seule boîte de saisie sur la page, il serait bien de se débarrasser de cette étape et de montrer simplement un autre roi de SiftInput lorsque l'utilisateur met le focus sur le champ. – LambergaR

0

Qu'en est-il en utilisant un « pop-up » personnalisé de toutes sortes dans lequel votre application implémente une onClick() ou onTouch() l'écouteur pour la zone de saisie de sorte que lorsque l'utilisateur clique dans le champ de saisie pour entrer une valeur, il voit une nouvelle activité simple avec la méthode de saisie substituée comme suggéré par @Dave Webb. En théorie, ne devrait pas être trop plus de code ou de frais généraux.

+0

Voilà ce que j'ai fini par faire ... – LambergaR

+0

@LambergaR J'ai eu le même problème et j'ai implémenté un InputMethodService (clavier personnalisé essentiellement) mais maintenant la question est, comment l'afficher quand l'utilisateur appuie sur le EditText ... (avec les moyens nécessaires) avez-vous réussi à comprendre cela? – AgentKnopf

+1

@AgentKnopf vous pouvez vérifier le hitresult() à partir du webview, qui renvoie le type edittext. – debonair

Questions connexes