شرح التعامل مع EditText لاستخدامها داخل التطبيق في لغة kotlin
اولاً نقوم باضافة العنصر الى layout الخاص في الواجهة
1 2 3 4 |
<EditText android:id="@+id/edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" /> |
سوف يتم شرح التحكم به من xml والاوامر الاكثر استخداماً وبعدها سوف نشرح باقي الامور برمجياً
الكود السابق الخاص به فقط لاضافته الى الواجهة ولكن من سطر واحد
ولكن ماذا لو كنى نريده ان يكون عدد من الاسطر المحددة مسبقاً ببساطة نستخدم
1 |
android:lines |
ونسند له عدد الاسطر المراد اضافتها مثلاً 5 اسطر فقط
1 |
android:lines="5" |
لن يقبل اكثر من خمسة اسطر لظهورها على الواجهة , هنى من اول شيئ يأخذ مساحة 5 اسطر
لكن ممكن بدلاً منها استخدام
1 |
android:maxLines="5" |
سوف يكون سطر واحد فقط واذا اراد المستخدم اضافة سطر اخر يقبله بشكل طبيعي ولكن لن يقبل ان يتمدد اكثر من 5 اسطر
وممكن ايضا تحديد نوع type الخاص به من البداية مثلا اذا وضعناه
1 |
android:inputType="textPassword" |
سوف يقوم بتشفير جميع المدخلات وتظهر على شكل نجوم
وممكن تحديد نوعه من البداية ولا يمكن للمستخدم ادخال به شيئ غير المحدد مثلا لدينا text, number, phone, email وهنالك المزيد يمكنن الاطلاع عليها جميعاً
اكثر ما يتم استخدامه هيا رسالة داخله تظهر للمستخدم ماذا يجب ان يدخل في هذا الحقل وعندما يبداء المستخدم كتابة تختفي
1 |
android:hint="email" |
عن طريق hint يمكنك اضافةالنص الذي تريد اظهار
الان ننتقل الى التعامل مع editText برمجياً من داخل الكلاس
اذا اردنا جلب النص الذي ادخله المستخدم بكل بساطة نقوم باستدعائه عن طريق id الخاص به text_view.text
id الخاص بنا حالياً هوا text_view وعن طريق text نجلب النص الذي ادخله المستخدم
1 |
edit_text.text |
الـ event الذي نستخدم لمعرفة التغيرات لحظة ادخال حرف من المستخدم او عدد الحروف المدخلة الخ…
1 |
addTextChangedListener |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
edit_text.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { } override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { } }) |
سوف نستخدم دالة onTextChanged لاظهار ما تم ادخاله من المستخدم لحظة ادخاله ايا حرف
عن طريق المتغير s يتم جلب ادخال المستخدم وعن طريق start يتم جلب عدد الحروف المدخلة طبعا يبداء العدد من ال0 مثل array
سوف يتم استخدام textview لعرض ادخال المستخدم بها لحظة ادخاله
واضافة زر لجلب النص النهائي المدخل
كود الوجهة كاملاً
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.kotdroid.testkotlin.MainActivity"> <EditText android:id="@+id/edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLines="5" android:inputType="text" android:hint="email"/> <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp"/> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Click" /> </LinearLayout> |
كود الكلاس
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) edit_text.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { } override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { text_view.text = s } }) btn.setOnClickListener({ showToast(edit_text.text.toString()) }) } fun showToast(message: String) { Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() } } |