EditText — είναι ένα βασικό στοιχείο του Android που προορίζεται για την εισαγωγή και επεξεργασία κειμένου στη διεπαφή χρήστη. Κληρονομεί από το TextView και παρέχει τη δυνατότητα εισαγωγής χαρακτήρων από εικονικό ή φυσικό πληκτρολόγιο. Το EditText υποστηρίζει πολλές λειτουργίες: κείμενο μονής και πολλαπλών γραμμών, κωδικούς πρόσβασης, αριθμούς, διευθύνσεις email και αριθμούς τηλεφώνου. Σύμφωνα με το Android Developers (2026), το EditText χρησιμοποιείται σε περισσότερο από το 90% των εφαρμογών Android για τη δημιουργία φορμών, πεδίων αναζήτησης, συνομιλιών και οθονών εισαγωγής δεδομένων.
Κύρια σημεία
EditText — είναι μια κλάση από το πακέτο android.widget που υλοποιεί ένα διαδραστικό πεδίο κειμένου για εισαγωγή δεδομένων από τον χρήστη. Στην ιεραρχία κληρονομικότητας του Android EditText extends TextView, επομένως κληρονομεί όλες τις ιδιότητες μιας ετικέτας κειμένου, συμπεριλαμβανομένης της διαχείρισης γραμματοσειρών, χρωμάτων και στοίχισης. Η κύρια διαφορά μεταξύ EditText και TextView είναι η δυνατότητα επεξεργασίας περιεχομένου — ο χρήστης μπορεί να εισάγει, να διαγράφει και να τροποποιεί κείμενο απευθείας στη διεπαφή.
Κάθε EditText συνδέεται με ένα στιγμιότυπο Editable που αποθηκεύει το εισαγόμενο κείμενο και υποστηρίζει λειτουργίες εισαγωγής, διαγραφής και αντικατάστασης χαρακτήρων. Κατά την εισαγωγή κειμένου, το EditText διαχειρίζεται αυτόματα τη θέση του δρομέα, την επιλογή κειμένου και το ιστορικό αλλαγών για αναίρεση/επανάληψη (undo/redo). Σύμφωνα με τον Android Developers Guide (2026), το EditText υποστηρίζει επίσης αυτόματη συμπλήρωση μέσω της κλάσης AutoCompleteTextView που κληρονομεί από το EditText.
Η αρχιτεκτονική του EditText βασίζεται στον διαχωρισμό μοντέλου (Editable), προβολής (TextView) και ελεγκτή (InputConnection). Κατά τη λήψη εστίασης, το EditText δημιουργεί ένα InputConnection μέσω του οποίου το σύστημα εισαγωγής μεταδίδει χαρακτήρες, πατήματα πλήκτρων και εντολές επεξεργασίας. Αυτός ο μηχανισμός εξασφαλίζει συμβατότητα με οποιεσδήποτε μεθόδους εισαγωγής — από εικονικά πληκτρολόγια έως φυσικά πληκτρολόγια Bluetooth και φωνητική εισαγωγή.
val editText = EditText(context).apply {
hint = "Εισαγάγετε κείμενο"
inputType = InputType.TYPE_CLASS_TEXT
maxLines = 1
setTextColor(Color.parseColor("#000000"))
}
EditText παρέχει δεκάδες χαρακτηριστικά για ακριβή ρύθμιση της συμπεριφοράς και της εμφάνισης. Μπορούν να οριστούν τόσο στη διάταξη XML όσο και προγραμματιστικά μέσω Kotlin ή Java. Τα χαρακτηριστικά χωρίζονται σε κατηγορίες: διαχείριση κειμένου, περιορισμοί, οπτική εμφάνιση και αλληλεπίδραση με πληκτρολόγιο.
| Χαρακτηριστικό | Περιγραφή | Παράδειγμα τιμής |
|---|---|---|
| android:hint | Κείμενο υπόδειξης που εμφανίζεται στο κενό πεδίο | „Εισαγάγετε email" |
| android:inputType | Λειτουργία εισαγωγής (κείμενο, αριθμός, κωδικός κλπ.) | textEmailAddress |
| android:maxLines | Μέγιστος αριθμός γραμμών | 3 |
| android:maxLength | Μέγιστο μήκος κειμένου σε χαρακτήρες | 100 |
| android:textColorHint | Χρώμα κειμένου υπόδειξης | #999999 |
Το χαρακτηριστικό android:hint είναι ένα από τα πιο σημαντικά — ενημερώνει τον χρήστη ποια δεδομένα αναμένονται στο πεδίο. Κατά την εισαγωγή κειμένου, το hint εξαφανίζεται αυτόματα. Το hint δεν συμμετέχει στην υποβολή της φόρμας και δεν αποθηκεύεται ως τιμή πεδίου. Το Material Design συνιστά τη χρήση του TextInputLayout με πλωτή ετικέτα αντί για απλό hint για πιο μοντέρνα εμφάνιση.
<!-- EditText in XML layout -->
@+id/etEmail
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter email"
android:inputType="textEmailAddress"
android:maxLines="1"
android:importantForAutofill="yes" />
Το χαρακτηριστικό inputType καθορίζει ποιος τύπος πληκτρολογίου θα εμφανιστεί στον χρήστη και ποιοι χαρακτήρες επιτρέπονται για εισαγωγή. Είναι μια μάσκα bit όπου η κλάση εισαγωγής (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) συνδυάζεται με τροποποιητές.
Κάθε λειτουργία εισαγωγής όχι μόνο αλλάζει τη διάταξη του πληκτρολογίου, αλλά επηρεάζει και την επεξεργασία κειμένου: στην αριθμητική λειτουργία επιτρέπονται μόνο ψηφία και δεκαδικό διαχωριστικό, στη λειτουργία email είναι διαθέσιμο το σύμβολο @ και επεκτάσεις τομέα, και στη λειτουργία τηλεφώνου εμφανίζονται ψηφία και σύμβολα +, #, *. Η σωστή επιλογή inputType έχει κρίσιμη επίδραση στην εμπειρία χρήστη — ένα ακατάλληλο πληκτρολόγιο αναγκάζει τον χρήστη να αλλάζει λειτουργίες, αυξάνοντας τον χρόνο συμπλήρωσης της φόρμας κατά 30–50%.
Σύμφωνα με τις Material Design Guidelines (2025), συνιστάται η χρήση του πιο συγκεκριμένου inputType για κάθε πεδίο: textPassword για κωδικούς, numberDecimal για τιμές, phone για αριθμούς τηλεφώνου, textMultiLine για εισαγωγή πολλαπλών γραμμών. Αυτό επιταχύνει τη συμπλήρωση φορμών και μειώνει τον αριθμό σφαλμάτων εισαγωγής.
// Προγραμματιστική ρύθμιση inputType
editText.inputType = InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
TextWatcher — είναι μια διεπαφή για την παρακολούθηση αλλαγών κειμένου στο EditText σε πραγματικό χρόνο. Περιέχει τρεις μεθόδους: η beforeTextChanged καλείται πριν από την αλλαγή, η onTextChanged — κατά τη διάρκεια της αλλαγής, η afterTextChanged — μετά την ολοκλήρωση της αλλαγής κειμένου. Το TextWatcher χρησιμοποιείται για επικύρωση εισαγωγής, μέτρηση χαρακτήρων, αναζήτηση και αυτόματη συμπλήρωση.
OnEditorActionListener χειρίζεται ενέργειες του χρήστη στο πληκτρολόγιο: πάτημα του κουμπιού Done (IME_ACTION_DONE), αναζήτηση (IME_ACTION_SEARCH), αποστολή (IME_ACTION_SEND), μετάβαση στο επόμενο πεδίο (IME_ACTION_NEXT) και άλλα. Αυτός ο ακροατής είναι ιδιαίτερα χρήσιμος για την οργάνωση πλοήγησης στη φόρμα — με το πάτημα του Next, η εστίαση μεταβαίνει αυτόματα στο επόμενο πεδίο, και με το πάτημα του Done, το πληκτρολόγιο κρύβεται και η αποστολή εκτελείται.
Σύμφωνα με το Android Developers Blog (2025), η σωστή χρήση του OnEditorActionListener με το χαρακτηριστικό android:imeOptions επιτρέπει τη δημιουργία διαισθητικών φορμών χωρίς επιπλέον κουμπιά αποστολής — ο χρήστης συμπληρώνει τα πεδία και πατάει Done στο πληκτρολόγιο, το οποίο ενεργοποιεί την αποθήκευση ή την αναζήτηση.
// TextWatcher για επικύρωση email
editText.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
val isValid = Patterns.EMAIL_ADDRESS.matcher(s).matches()
editText.error = if (isValid) null else "Invalid email format"
}
})
// OnEditorActionListener για υποβολή φόρμας
editText.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
submitForm()
true
} else false
}
Ας εξετάσουμε ένα πλήρες παράδειγμα δημιουργίας οθόνης σύνδεσης με χρήση EditText για εισαγωγή email και κωδικού πρόσβασης. Σε αυτό το παράδειγμα παρουσιάζεται η ρύθμιση του inputType, η επικύρωση μέσω TextWatcher και ο χειρισμός του πατήματος του κουμπιού σύνδεσης.
@+id/etLoginEmail
android:layout_width="match_parent"
android:hint="Email"
android:inputType="textEmailAddress"
android:maxLines="1" />
@+id/etLoginPassword
android:layout_width="match_parent"
android:hint="Password"
android:inputType="textPassword"
android:maxLines="1" />
class LoginFragment : Fragment() {
private lateinit var etEmail: EditText
private lateinit var etPassword: EditText
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
etEmail = view.findViewById(R.id.etLoginEmail)
etPassword = view.findViewById(R.id.etLoginPassword)
etEmail.addTextChangedListener(emailWatcher)
etPassword.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
performLogin()
true
} else false
}
}
}
EditText υποστηρίζει προσαρμογή μέσω χαρακτηριστικών XML, θεμάτων και στυλ. Μπορεί να αλλάξει το χρώμα κειμένου, το χρώμα υπόδειξης, το χρώμα υπογράμμισης (backgroundTint), το στυλ γραμματοσειράς, το μέγεθος κειμένου και πολλά άλλα. Το Material Components παρέχει το θέμα MaterialComponents. EditText με προσαρμοσμένα χαρακτηριστικά, συμπεριλαμβανομένων των boxStrokeColor, boxBackgroundColor και endIconMode.
Για την αλλαγή του χρώματος υπογράμμισης του EditText χρησιμοποιείται το χαρακτηριστικό android:backgroundTint, το οποίο ορίζει το χρώμα για την προεπιλεγμένη κατάσταση και την κατάσταση εστίασης. Στο Material Design, το χρώμα υπογράμμισης διαχειρίζεται μέσω του colorPrimary του θέματος. Για πλήρη προσαρμογή, μπορεί να δημιουργηθεί ένα προσαρμοσμένο drawable για φόντο στον φάκελο res/drawable.
| Στυλ | Χαρακτηριστικό | Αποτέλεσμα |
|---|---|---|
| Χρώμα κειμένου | android:textColor | Αλλάζει το χρώμα του εισαγόμενου κειμένου |
| Χρώμα hint | android:textColorHint | Αλλάζει το χρώμα του κειμένου υπόδειξης |
| Υπογράμμιση | android:backgroundTint | Αλλάζει το χρώμα της γραμμής κάτω από το πεδίο |
| Μέγεθος γραμματοσειράς | android:textSize | Ορίζει το μέγεθος κειμένου σε sp |
| Γραμματοσειρά | android:fontFamily | Συνδέει προσαρμοσμένη γραμματοσειρά |
Για τη δημιουργία ενιαίου στυλ όλων των EditText στην εφαρμογή, συνιστάται ο ορισμός ενός καθολικού στυλ στο θέμα. Το Material Design προσφέρει το στυλ Widget.MaterialComponents.TextInputLayout.OutlinedBox το οποίο εφαρμόζεται αυτόματα σε όλα τα πεδία εισαγωγής που χρησιμοποιούν TextInputLayout. Αυτό εξασφαλίζει συνεπή εμφάνιση χωρίς αντιγραφή χαρακτηριστικών σε κάθε διάταξη.
Συχνές ερωτήσεις
EditText κληρονομεί από το TextView και προσθέτει τη δυνατότητα επεξεργασίας κειμένου. Το TextView εμφανίζει μόνο κείμενο, ενώ το EditText επιτρέπει στον χρήστη να εισάγει, να διαγράφει και να τροποποιεί περιεχόμενο. Το EditText υποστηρίζει επίσης inputType, TextWatcher, διαχείριση δρομέα και άλλες λειτουργίες που σχετίζονται με την εισαγωγή δεδομένων.
Χρησιμοποιήστε InputFilter — μια διεπαφή για φιλτράρισμα εισαγόμενων χαρακτήρων. Το EditText υποστηρίζει τον ορισμό πίνακα φίλτρων μέσω της μεθόδου setFilters(). Για παράδειγμα, το InputFilter.LengthFilter περιορίζει το μήκος κειμένου, και ένα προσαρμοσμένο InputFilter μπορεί να απαγορεύει συγκεκριμένους χαρακτήρες, κανονικές εκφράσεις ή εύρη Unicode.
Καλέστε τη μέθοδο editText.text.toString() σε Kotlin ή editText.getText().toString() σε Java. Η ιδιότητα text επιστρέφει ένα Editable το οποίο μετατρέπεται σε String μέσω toString(). Είναι σημαντικό να ελέγχετε το κείμενο για null και κενό πριν από τη χρήση, ειδικά σε φόρμες με υποχρεωτικά πεδία.
Ορίστε το χαρακτηριστικό android:inputType="textMultiLine" ή προσθέστε προγραμματιστικά τη σημαία InputType.TYPE_TEXT_FLAG_MULTI_LINE. Στη λειτουργία πολλαπλών γραμμών, το EditText επιτρέπει αλλαγή γραμμής με Enter και αυξάνεται αυτόματα σε ύψος. Για περιορισμό ύψους, χρησιμοποιήστε android:maxLines ή android:minLines.
Ορίστε το χαρακτηριστικό android:enabled="false" ή καλέστε editText.isEnabled = false στον κώδικα. Το απενεργοποιημένο EditText δεν αντιδρά σε αφές, δεν λαμβάνει εστίαση και εμφανίζεται σε γκρι χρώμα (κατάσταση disabled). Εναλλακτικά, χρησιμοποιήστε android:focusable="false", το οποίο απενεργοποιεί την εισαγωγή αλλά διατηρεί την κανονική εμφάνιση.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης