InputType — τι είναι, χαρακτηριστικά εισόδου και η ρύθμισή τους στο Android

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-07-07 Χρόνος ανάγνωσης: 9 λεπ

InputType — είναι ένα χαρακτηριστικό Android που καθορίζει τη φύση των εισαγόμενων δεδομένων και τη συμπεριφορά του πληκτρολογίου για πεδία κειμένου. Η τιμή InputType αντιπροσωπεύει μια bitwise μάσκα που συνδυάζει την κλάση εισόδου (κείμενο, αριθμός, τηλέφωνο, ημερομηνία) και τροποποιητές (πολλαπλών γραμμών, αυτόματη διόρθωση, κεφαλαία γράμματα, κρυφή είσοδος). Το InputType επηρεάζει τον τύπο του εμφανιζόμενου πληκτρολογίου, το φιλτράρισμα των εισαγόμενων χαρακτήρων και τη λειτουργία αυτόματης συμπλήρωσης. Σύμφωνα με το Android Developers (2026), το InputType είναι ένα από τα πιο σημαντικά χαρακτηριστικά για τη διασφάλιση σωστής εισαγωγής δεδομένων και πρέπει να ορίζεται ρητά για κάθε επεξεργάσιμο πεδίο κειμένου.

Κύρια σημεία

  • InputType — bitwise μάσκα που καθορίζει την κλάση εισόδου και τους τροποποιητές για το EditText.
  • Κλάσεις εισόδου — TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE, TYPE_CLASS_DATETIME.
  • Τροποποιητές — σημαίες που διευκρινίζουν τη συμπεριφορά: MULTI_LINE, AUTO_CORRECT, PASSWORD, CAP_SENTENCES.
  • Συνδυασμός — η κλάση και οι τροποποιητές συνδυάζονται μέσω bitwise OR για ακριβή διαμόρφωση.
  • Επίδραση — το σωστό InputType επιταχύνει την εισαγωγή, μειώνει τα λάθη και βελτιώνει την UX της φόρμας.

Τι είναι το InputType στο Android

InputType — είναι μια ακέραια σταθερά (Int) που κωδικοποιεί τη λειτουργία εισαγωγής για ένα πεδίο κειμένου. Στο Android, ορίζεται στην κλάση android.text.InputType. Η τιμή InputType αποτελείται από δύο μέρη: την κλάση εισόδου (bits 0–4) και τους τροποποιητές (bits 5–31). Η κλάση εισόδου καθορίζει τον βασικό τύπο δεδομένων — κείμενο, αριθμός, τηλέφωνο, ημερομηνία. Οι τροποποιητές διευκρινίζουν τη συμπεριφορά εντός της επιλεγμένης κλάσης — για παράδειγμα, για την κλάση κειμένου μπορεί να ενεργοποιηθεί η αυτόματη διόρθωση, τα κεφαλαία γράμματα ή η εισαγωγή πολλαπλών γραμμών.

Ο μηχανισμός InputType λειτουργεί σε τρία επίπεδα: στο επίπεδο του πλαισίου Android καθορίζει ποιο InputConnection θα δημιουργηθεί (σύνδεση μεταξύ EditText και IME). στο επίπεδο IME (πληκτρολογίου) υποδεικνύει ποιους χαρακτήρες να εμφανίσει και πώς να επεξεργαστεί την είσοδο. στο επίπεδο εφαρμογής φιλτράρει χαρακτήρες μέσω του InputFilter που είναι ενσωματωμένο στο EditText. Σύμφωνα με το Android Source Code (AOSP, 2026), η bitwise μάσκα επεξεργάζεται στη μέθοδο TextView.getInputType(), η οποία επιστρέφει την τρέχουσα τιμή, και στη setInputType(), η οποία αναδιαμορφώνει τα εσωτερικά φίλτρα και τη σύνδεση με το IME.

Ένα σημαντικό χαρακτηριστικό του InputType — δεν μπορεί να διαβαστεί από άλλη διεργασία για λόγους ασφαλείας. Αυτό αποτρέπει την κλοπή δεδομένων μέσω πρόσβασης στον τύπο εισόδου (για παράδειγμα, τον προσδιορισμό αν ένα πεδίο είναι κωδικός πρόσβασης). Κατά την προσπάθεια ανάγνωσης InputType από άλλη εφαρμογή, επιστρέφεται προεπιλεγμένα TYPE_CLASS_TEXT.

kotlin
// Βασικές σταθερές InputType
InputType.TYPE_CLASS_TEXT       // 0x0001 = 1
InputType.TYPE_CLASS_NUMBER     // 0x0002 = 2
InputType.TYPE_CLASS_PHONE      // 0x0003 = 3
InputType.TYPE_CLASS_DATETIME   // 0x0004 = 4

// Μάσκα για εξαγωγή κλάσης
InputType.TYPE_MASK_CLASS       // 0x0000000F

Κλάσεις InputType: TEXT, NUMBER, PHONE, DATETIME

Στο Android ορίζονται τέσσερις βασικές κλάσεις InputType. Κάθε κλάση αντιστοιχεί σε μια συγκεκριμένη κατηγορία δεδομένων και ενεργοποιεί τον αντίστοιχο τύπο πληκτρολογίου. Η κλάση υποδεικνύεται στα bits 0–4 της bitwise μάσκας και μπορεί να εξαχθεί μέσω της μάσκας TYPE_MASK_CLASS (0x0F).

ΚλάσηΣταθεράΠληκτρολόγιοΕφαρμογή
TEXTTYPE_CLASS_TEXT (1)QWERTYΚείμενο, σχόλια, περιγραφή
NUMBERTYPE_CLASS_NUMBER (2)ΑριθμητικόΠοσότητα, τιμή, ηλικία
PHONETYPE_CLASS_PHONE (3)ΤηλεφώνουΑριθμός τηλεφώνου
DATETIMETYPE_CLASS_DATETIME (4)Ημερομηνίας/ώραςΗμερομηνία, ώρα

Το TYPE_CLASS_DATETIME χρησιμοποιείται σπάνια άμεσα — συνήθως για εισαγωγή ημερομηνίας χρησιμοποιούνται DatePicker ή DatePickerDialog, όχι πεδίο κειμένου. Ωστόσο, σε ορισμένα σενάρια (γρήγορη χειροκίνητη εισαγωγή ημερομηνίας) αυτή η κλάση μπορεί να είναι χρήσιμη. Δεν έχει εξειδικευμένο πληκτρολόγιο και συνήθως εμφανίζει αριθμητικό πληκτρολόγιο.

Κάθε κλάση εισόδου μπορεί να συνδυαστεί με παραλλαγές (variation) — υποτύπους που υποδεικνύονται στα bits 5–7. Για παράδειγμα, το TYPE_TEXT_VARIATION_PASSWORD (bit 5) προσθέτει κρυφή είσοδο στην κλάση TEXT. Bits παραλλαγής: 0x000000E0 (μάσκα TYPE_MASK_VARIATION).

Σημαίες-τροποποιητές InputType

Σημαίες-τροποποιητές InputType (bits 8–31) προσθέτουν επιπλέον δυνατότητες στη βασική κλάση. Δεν αλλάζουν τον τύπο πληκτρολογίου, αλλά τροποποιούν τη συμπεριφορά εισαγωγής. Οι σημαίες είναι συγκεκριμένες για κάθε κλάση — οι σημαίες για TEXT δεν λειτουργούν με NUMBER και αντίστροφα. Παρακάτω παρατίθενται οι κύριοι τροποποιητές για κάθε κλάση.

Σημαίες για TEXT

  • TYPE_TEXT_FLAG_CAP_CHARACTERS — όλα τα γράμματα κεφαλαία.
  • TYPE_TEXT_FLAG_CAP_WORDS — κάθε λέξη ξεκινά με κεφαλαίο.
  • TYPE_TEXT_FLAG_CAP_SENTENCES — κεφαλαίο στην αρχή της πρότασης (προεπιλογή).
  • TYPE_TEXT_FLAG_AUTO_CORRECT — αυτόματη διόρθωση ορθογραφικών λαθών.
  • TYPE_TEXT_FLAG_AUTO_COMPLETE — αυτόματη συμπλήρωση (για AutoCompleteTextView).
  • TYPE_TEXT_FLAG_MULTI_LINE — εισαγωγή πολλαπλών γραμμών.
  • TYPE_TEXT_FLAG_NO_SUGGESTIONS — απενεργοποίηση προτάσεων.

Σημαίες για NUMBER

  • TYPE_NUMBER_FLAG_SIGNED — επιτρέπει αρνητικούς αριθμούς (αρνητικό πρόσημο).
  • TYPE_NUMBER_FLAG_DECIMAL — επιτρέπει δεκαδική υποδιαστολή.

Σύμφωνα με το Android Developers Documentation (2026), οι σημαίες για διαφορετικές κλάσεις δεν αλληλεπικαλύπτονται — η προσπάθεια χρήσης σημαίας TEXT με NUMBER θα αγνοηθεί. Για τον έλεγχο μιας ορισμένης σημαίας χρησιμοποιείται bitwise AND: (inputType and FLAG) != 0.

Συνδυασμοί InputType: παραδείγματα για διαφορετικά σενάρια

Ο σωστός συνδυασμός InputType με κλάσεις και σημαίες είναι το κλειδί για τη δημιουργία βολικών φορμών. Ας εξετάσουμε τυπικά σενάρια και τις αντίστοιχες διαμορφώσεις InputType. Κάθε σενάριο βελτιστοποιεί την εισαγωγή για έναν συγκεκριμένο τύπο δεδομένων, καθιστώντας τη φόρμα διαισθητική και επιταχύνοντας τη συμπλήρωση.

ΣενάριοInputTypeΠληκτρολόγιο
ΌνομαtextCapWordsQWERTY, κάθε λέξη με κεφαλαίο
EmailtextEmailAddressQWERTY με @ και .
ΚωδικόςtextPasswordQWERTY, κρυφή είσοδος
ΤηλέφωνοphoneΨηφία με +, #, *
ΤιμήnumberDecimalΨηφία με υποδιαστολή
ΠοσότηταnumberΜόνο ψηφία
ΣχόλιοtextCapSentences|textMultiLineQWERTY, πολλαπλών γραμμών
Αναζήτησηtext|textNoSuggestionsQWERTY χωρίς προτάσεις
kotlin
// Συνδυασμός για πεδίο τιμής
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// Συνδυασμός για πεδίο σχολίου
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_MULTI_LINE

Προγραμματιστική εργασία με InputType

Η ρύθμιση InputType προγραμματιστικά μέσω setInputType() αντικαθιστά την προηγούμενη τιμή. Εάν πρέπει να αλλάξει μόνο ένα μέρος της μάσκας (για παράδειγμα, προσθήκη σημαίας), πρέπει να αποθηκευτεί η τρέχουσα τιμή, να τροποποιηθεί και να εφαρμοστεί ξανά. Κάθε κλήση setInputType() αναδιαμορφώνει τα εσωτερικά φίλτρα του EditText.

Η μέθοδος setRawInputType() διαφέρει από τη setInputType στο ότι δεν προκαλεί αναδιαμόρφωση φίλτρων και προτάσεων. Χρησιμοποιείται για προσωρινή αλλαγή του InputType χωρίς πλήρη επαναφόρτωση της κατάστασης του EditText. Μετά την κλήση setInputType(), συνιστάται η επανεκκίνηση του IME για ενημέρωση του πληκτρολογίου.

Εναλλαγή λειτουργιών

kotlin
// Εναλλαγή μεταξύ κωδικού και ορατού κειμένου
fun togglePasswordVisibility(editText: EditText) {
    val currentType = editText.inputType
    val isPassword = (currentType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0

    editText.inputType = if (isPassword) {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
    } else {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_PASSWORD
    }

    // Διατήρηση θέσης δρομέα
    val cursorPos = editText.selectionStart
    editText.setSelection(cursorPos)
}

Εξαγωγή κλάσης και παραλλαγής

kotlin
// Λήψη κλάσης εισόδου
fun getInputClass(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_CLASS
}

// Λήψη παραλλαγής εισόδου
fun getInputVariation(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_VARIATION
}

// Έλεγχος αν είναι πεδίο κωδικού
fun isPasswordField(editText: EditText): Boolean {
    return (editText.inputType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0
}

Βέλτιστες πρακτικές επιλογής InputType

Η σωστή επιλογή InputType δεν είναι μόνο UX, αλλά και ασφάλεια και ορθότητα δεδομένων. Οι κύριες συστάσεις περιλαμβάνουν: να ορίζετε πάντα ρητό InputType για κάθε EditText. να χρησιμοποιείτε την πιο συγκεκριμένη κλάση εισόδου. να μην συνδυάζετε σημαίες από διαφορετικές κλάσεις. για πεδία με ευαίσθητα δεδομένα να χρησιμοποιείτε τις παραλλαγές PASSWORD. για πεδία αναζήτησης να χρησιμοποιείτε imeOptions=”actionSearch”.

Το InputType επηρεάζει επίσης τη λειτουργία των υπηρεσιών προσβασιμότητας (Accessibility). Τα πεδία με τύπο textPassword λαμβάνουν επιπλέον προστασία από αναγνώστες οθόνης — δεν διαβάζουν δυνατά τους εισαγόμενους χαρακτήρες. Για πεδία με textEmailAddress, ο Screen Reader ενημερώνει τον χρήστη ότι το πεδίο προορίζεται για email και προσφέρει κατάλληλες προτάσεις.

  • Ρητότητα — πάντα να ορίζετε ρητά το InputType, μην βασίζεστε στην προεπιλεγμένη τιμή (textMultiLine).
  • Συγκεκριμένοτητα — χρησιμοποιείτε τον πιο συγκεκριμένο τύπο: textEmailAddress, όχι text για email.
  • Ασφάλεια — για κωδικούς, PIN και δεδομένα καρτών χρησιμοποιείτε τις παραλλαγές PASSWORD.
  • Αυτόματη συμπλήρωση — συνδυάστε το InputType με autofillHints για υποστήριξη διαχειριστών κωδικών.
  • Δοκιμή — ελέγξτε τη συμπεριφορά σε διαφορετικά πληκτρολόγια (Gboard, SwiftKey, Samsung Keyboard).

Σύμφωνα με το Material Design Guidelines (2025), το InputType πρέπει να αντιστοιχεί στον τύπο δεδομένων που εισάγει ο χρήστης. Το λάθος InputType όχι μόνο επιβραδύνει την εισαγωγή, αλλά μπορεί επίσης να οδηγήσει σε σφάλματα: για παράδειγμα, εάν για την εισαγωγή αριθμού τηλεφώνου παραμείνει textMultiLine, το πληκτρολόγιο δεν θα εμφανίσει το αριθμητικό μπλοκ και ο χρήστης θα αναγκάζεται να αλλάζει χειροκίνητα τη διάταξη κάθε φορά.

Συχνές ερωτήσεις

Σε τι διαφέρει το InputType από το Keyboard Type;

InputType — είναι ένα χαρακτηριστικό EditText που καθορίζει τον τύπο των εισαγόμενων δεδομένων μέσω bitwise μάσκας. Keyboard Type — είναι η ανεπίσημη ονομασία για τον οπτικό τύπο πληκτρολογίου που ενεργοποιείται από το InputType. Το InputType επηρεάζει επίσης το φιλτράρισμα χαρακτήρων, την αυτόματη διόρθωση και την αυτόματη συμπλήρωση, όχι μόνο τη διάταξη του πληκτρολογίου.

Πώς να επαναφέρετε το InputType στην προεπιλεγμένη τιμή;

Ορίστε editText.inputType = InputType.TYPE_CLASS_TEXT ή χρησιμοποιήστε τη σταθερά InputType.TYPE_NULL (0x00000000) για πλήρη επαναφορά. Με TYPE_NULL το πεδίο δεν θα εμφανίζει πληκτρολόγιο κατά την εστίαση. Για επιστροφή στην τυπική εισαγωγή κειμένου, ορίστε TYPE_CLASS_TEXT χωρίς σημαίες.

Μπορεί να δημιουργηθεί προσαρμοσμένο InputType;

Δεν μπορεί να δημιουργηθεί νέα κλάση InputType, καθώς αποτελεί μέρος του πλαισίου Android. Ωστόσο, μπορείτε να συνδυάσετε υπάρχουσες κλάσεις και σημαίες για να επιτύχετε την επιθυμητή συμπεριφορά. Εφαρμόστε πρόσθετο φιλτράρισμα χαρακτήρων μέσω InputFilter, το οποίο ορίζεται στο EditText μέσω της μεθόδου setFilters().

Πώς επηρεάζει το InputType το IME (πληκτρολόγιο);

Το InputType μεταβιβάζεται στο σύστημα εισόδου μέσω του InputConnection. Το IME διαβάζει την κλάση και την παραλλαγή InputType και επιλέγει την αντίστοιχη διάταξη πληκτρολογίου. Για παράδειγμα, το TYPE_CLASS_NUMBER με TYPE_NUMBER_FLAG_DECIMAL κάνει το πληκτρολόγιο να εμφανίζει αριθμητικό μπλοκ με υποδιαστολή. Τα περισσότερα σύγχρονα πληκτρολόγια ακολουθούν αυτές τις συστάσεις.

Πώς να ελέγξετε το InputType κατά τον χρόνο εκτέλεσης;

Χρησιμοποιήστε την ιδιότητα editText.inputType σε Kotlin ή τη μέθοδο editText.getInputType() σε Java. Για εξαγωγή της κλάσης, εφαρμόστε τη μάσκα: inputType and InputType.TYPE_MASK_CLASS. Για έλεγχο συγκεκριμένης σημαίας: inputType and InputType.TYPE_TEXT_FLAG_MULTI_LINE — εάν το αποτέλεσμα != 0, η σημαία είναι ορισμένη.

Σύνοψη

  • InputType — bitwise μάσκα που αποτελείται από την κλάση εισόδου (TEXT, NUMBER, PHONE, DATETIME) και τροποποιητές.
  • Κλάση εισόδου καθορίζει τον βασικό τύπο δεδομένων και τον τύπο του εμφανιζόμενου πληκτρολογίου.
  • Τροποποιητές διευκρινίζουν τη συμπεριφορά: πολλαπλών γραμμών, αυτόματη διόρθωση, κεφαλαία, κρυφή είσοδος.
  • Συνδυασμός μέσω bitwise OR επιτρέπει τη δημιουργία ακριβών διαμορφώσεων για διαφορετικά σενάρια.
  • Παραλλαγές PASSWORD απενεργοποιούν την αυτόματη διόρθωση, κρύβουν χαρακτήρες και αποτρέπουν την εγγραφή στο λεξικό.
  • Προγραμματιστικός ορισμός μέσω setInputType() απαιτεί επανεκκίνηση του IME για ενημέρωση του πληκτρολογίου.
  • Βέλτιστες πρακτικές — ορίστε ρητά το InputType, χρησιμοποιήστε συγκεκριμένους τύπους και δοκιμάστε σε διαφορετικά πληκτρολόγια.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης