EditText در اندروید

منتشرشده توسط حامد قنبری در تاریخ

 

 

در اندرویدEditText  ویوهایی هستند که امکان تعامل نوشتاری برنامه را با کاربر فراهم می سازد و بیشتر به منظور دریافت اطلاعات نوشتاری مانند نام و اطلاعات مربوط به کاربر تعبیه شده است تا کاربر در صورت خواست بتواند  اطلاعات لازم را به برنامه بدهد و منتظر عملیات مورد نظر خود باشد. در Android، EditText یک ویجت ورودی استاندارد در برنامه های آندروید محسوب می شود که از  overlay over TextView می کند با این تفاوت که که خود را قابل ویرایش می کند.بنابراین  EditText یک کلاس منشعب شده از کلاس از TextView با عملیات ویرایش متن است. ساده ترین مثال EditText فرم ورود یا ورود به سیستم است.دقت کنید که این ویو را می توان از جمله پرکاربردترین عناصر مختلف در اندروید دانست که برنامه نویس قبل هر چیزی می بایست به با نحوه برنامه نویسی آن آشنایی لازم را داشته باشد. از این رو ضروری است در ارتباط با این موضوع حساسیت بیشتری از خود نشان دهید.

نحوه اضافه کردن EditText  به پروژه:

بطور کلی دو روش کلی  برای ایجادEditText  در برنامه اندروید وجود دارد. راه حل اول همانطور که در مبحث پیشین در موضوع Button  مطرح شد افزودن از طریق فایل XML  که به شکل زیر می باشد.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         android:id="@+id/ed1"/>

</RelativeLayout>

در این روش در فایل XML  همانند فایل activity_main.xml و در  داخل لایوت های اصلی یا فرعی ،  تگ شروع شونده EditText>  را تایپ کرده و سپس سایر ویژگی های مربوط به آن پ مانند Hint ، رنگ متن ، اندازه متن ، طول تعداد کاراکترها و … را به آن  اضافه می کنیم و سپس با تگ پایانی /> آن را می بندیم. به منظور درک بیشتر موضوع به کدهای زیر دقت کنید:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:layout_width="match_parent" اندازه طول ویو
        android:layout_height="wrap_content"   اندازه عرض یا ارتفاع ویو
         android:id="@+id/ed1"    ایدی یا شناسه ویو
        android:hint="please write name"  متن l,vn hahvi ,d,
        android:textSize="20sp"    انازه متن ویو
        android:textColor="@color/colorAccent"   رنگ متن ویو
        android:maxLength="20"   تعداد کاراکترهای مجاز در ویو
        android:layout_marginTop="30sp"    فاصله ویو از قسمت بالایی صفحه
        android:gravity="center"  موقعیت قرارگیری متن ویو
    />

</RelativeLayout>

همانطور که در کد های  XML فوق می بینید EditText   در داخل لایوت اصلی ما یعنی   RelativeLayout قرار دارد  و دارای ویژگی های متعددی است که در برنامه به هنگام اجرای آن بر روی آن اعمال می شود.

آنچه برای ما مهم است نحوه فراخوانی این عنصر ایجاد شده به منظور اعمال برخی عملیات ها در کلاس مرتبط با آن است. به همین منظور تمامی ویوهای موجود در فایل XML  را از طریق ایدی یا شناسه مرتبط با آن ویو در کلاس فراخوانی می کنیم. که در مثال ذکر شده ایدی باتن به شکل زیر تعریف شده است:

برای فراخوانی EditText و سایر ویوها برای منظور برنامه نویسی در کلاس از متد

findViewById(R.id.yourid)

استفاده می کنیم.

به همین منظور لازم است در کلاس ها  اولاً فایل XML مرتبط با کلاس مشخص شود. یعنی ما باید مشخص کنیم که قصد فراخوانی چه چیزی را از کدام فایل XMl  داریم که در کد زیر در دستور  قرمز رنگ مشخص شده است و سپس  آن ویو یا عنصر مورد نظر در فایل مربوطه را بر اساس شناسه آن فراخوانی می کنیم  و آن در متغیری از نوع خود ذخیره می کنیم.

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.EditText;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EditText edname = (EditText)findViewById(R.id.ed1);
    

    }
}

تا اینجا ما توانستیم EditText  مورد نظر خود را در فایل  Xml  ایجاد کرده و آن را به کلاس موردنظر خودمان فراخوانی کنیم. اکنون لازم است تعیین کنیم که چگونه می توانیم متن مورد نظر را از کاربر گرفته و بر روی آن عملیات مدنظر خود را اعمال کنیم. بدین منظور لازم است از ابتدا آن را به نوع String  تبدیل کنیم . بدین منظور آن را در متغییر از نوع String  ذخیره می کنیم که سینتکس کلی ان به شکل زیر می باشد:

String input =   edname.getText().toString();

به مثال زیر توجه کنید:

به منظور درک بهتر توضیحات فوق نظر شما را به مثالی جلب می کنیم. در این مثال قرار است کاربر با کلیک کردن بر روی Button  متن مورد نظر شما از EditText  را گرفته و آن را Toast  نمایش دهد .

اگر در داخل برنامه اکلیپس یا اندروید استودیو قرار دارید پروژه جدیدی را  ایجاد کنید

اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

اما اگر هنوز برنامه خود را باز نکرده اید یکی از برنامه های فوق را باز نموده و بعد از تعیین مشخصات(نامگذاری) ، تعیین حداقل sdk  و نوع اکتیویتی (blank  یا Empty) ، نام اکتیویتی ابتدایی و اصلی خود  را همان MainActivity قرار دهید.

در مسیر res ⇒layout لایه متناظر اکتیوتی اصلی یعنی activity_main را پیدا نمود و کدهای مندرج و پیش فرض آن را پاک کرده و کدهای xml  زیر را به آن اضافه کنید:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">



    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ed1"
        android:hint="please write name"
        android:textSize="20sp"
        android:textColor="@color/colorAccent"
        android:maxLength="20"
        android:layout_marginTop="30sp"
        android:gravity="center"/>
    
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:text="Click Me"
        android:id="@id/button1"
        android:layout_gravity="center"
        android:layout_marginTop="50sp"/>

</LinearLayout>

سپس به سراغ کلاس اصلی خود یعنی MainActivity  رفته و کدهای زیر ر در آن قرار می دهیم.

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText edname = (EditText)findViewById(R.id.ed1);
        Button   captureText = (Button)findViewById(R.id.button1);
        
        captureText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String input =   edname.getText().toString();
                Toast.makeText(getApplication(), input, Toast.LENGTH_LONG).show();
                
            }
        });
        


    }
}

حال می توانید برنامه خود را اجرا کنید و نتیجه کار خود را ببینید. جهت آموزش بیشتر می توانید یک صفحه لاگین طراحی کنید که نام کاربری و رمز عبور کاربر را گرفته و آنها را دوباره به همان کاربر نشان دهد. اگر به مشکل خاصی برخورد کردید می توانید آن را در قسمت دیدگاه ها مطرح کنید.

موفق و پیروز باشید.


0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --