رادیو باتن (RadioButton) در اندروید
رادیو باتن( RadioButton ) در اندروید
متن به همراه عکس آشنایی با رادیو باتن( RadioButton ) در اندروید
در این مقالهی آموزشی میخواهیم نحوهی استفاده از RadioButtonها و RadioGroupها را با هم بررسی کنیم.
RadioButton چیست؟
از RadioButton ها زمانی استفاده میشود که بخواهیم تنها اجازهی انتخاب یک گزینه را به کاربر بدهیم. مثلا برای تعیین جنسیت کاربر یکی از دو مورد مرد یا زن باید انتخاب شود که در اینجا از RadioButton استفاده میکنیم. به مجموعهای ازRadioButton ها، RadioGroup میگوییم.
نحوهی استفاده از RadioButton :
ابتدا یک پروژه ی جدید میسازیم.
سپس از طریق آدرس زیر وارد قسمت مربوط به میشویم:
app>res>layout>activity_main.xml
وقتی وارد این قسمت میشویم به صورت پیش فرض یک 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 31 32 |
<RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/rb_MainActivity_shab" android:text="شب" /> <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/rb_MainAvtiviy_roz" android:text="روز" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/b_MainActivity_result" android:text="نتیجه" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/radioGroup" /> |
توضیح کدها:
- چون که میخواهیم از چند RadioButton استفاده کنیم گزینهی RadioGroup را انتخاب میکنیم
- در خط 1 و 2، طول RadioGroup را روی گزینهی wrap_content و عرض را روی گزینهی match_parent قرار میدهیم
- در خط 9، داخل RadioGroup، یک RadioButton اضافه میکنیم
- در خط 10 و 11، طول RadioButton را روی گزینهی wrap_content و عرض را روی گزینهی match_parent قرار میدهیم
- در خط 12، برای RadioButton یک آیدی انتخاب میکنیم
- در خط 13، برای RadioButon متن دلخواهی را که میخواهیم در هنگام اجرا نشان دهد مینویسیم
- در خط 14، یک RadioButon دیگر اضافه میکنیم
- در خط 15 و 16، طول RadioButton را روی گزینهی wrap_content و عرض را روی گزینهی match_parent قرار میدهیم
- در خط 17، برای RadioButon یک آیدی انتخاب میکنیم
- در خط 18، برای RadioButon متن دلخواهی را که میخواهیم در هنگام اجرا نشان دهد مینویسیم
- در خط 19 یک Button اضافه میکنیم
- در خط 20 و 21، طول Button را روی گزینهی wrap_content و عرض را روی گزینهی match_parent قرار میدهیم
- در خط 22، برای Buton یک آیدی انتخاب میکنیم
- در خط 23، برای Buton متن دلخواهی را که میخواهیم در هنگام اجرا نشان دهد مینویسیم
- ممکن است در زیر عبارت RadioGroup خط قرمز رنگی مشاهده کنیم که به دلیل استفاده از لایهی constreintlayout است. در این لایه حتما باید اتصال دیوارههای بالا، پایین، چپ و راست باتن مشخص شود.
- زمانی که باتنها را از دیواره متصل میکنیم کدهای خطوط 3 تا 8 و 24 تا 28 ایجاد میشود
حال گزینهی run را انتخاب میکنیم و از کدنویسی بالا اجرا میگیریم
مشاهده میکنیم که با انتخاب یک گزینه دیگری را نمیتوانیم انتخاب کنیم چون رادیوباتنها در داخل RadioGroup قرار گرفتهاند
حال از طریق مسیر زیر وارد قسمت جاوا میشویم:
app>java>com.kazemieh.www.radiobottun>MainActivity
و سپس از طریق کدنویسی زیر رادیوباتنها و باتن را به قسمت جاوا اضافه میکنیم:
1 2 3 4 |
final RadioButton rb_shab=findViewById(R.id.rb_MainActivity_shab); final RadioButton rb_roz=findViewById(R.id.rb_MainAvtiviy_roz); Button result=findViewById(R.id.b_MainActivity_result); |
توضیح کدها:
- در خط 1، رادیوباتن اول را تعریف میکنیم و مقداری را برایش درنظر میگیریم. به وسیلهی متد findViewById بین این قسمت و کدهای قسمت xml اتصال برقرار میکنیم.
- در خط 2، رادیو باتن دوم را تعریف میکنیم و مقداری را برایش در نظر میگیریم، به وسیلهی متد findViewById بین این قسمت و کدهای قسمت xml اتصال برقرار میکنیم.
- در خط 3، باتن را تعریف میکنیم و مقداری را برایش در نظر میگیریم و به وسیلهی متد findViewById بین این قسمت و کدهای قسمت xml اتصال برقرار میکنیم.
روش اول:
1 2 3 4 5 6 7 8 9 10 11 |
result.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (rb_shab.isChecked()){ Toast.makeText(getApplicationContext(),"شب کلیک شده است",Toast.LENGTH_LONG).show(); } if (rb_roz.isChecked()){ Toast.makeText(getApplicationContext(),"روز کلیک شده است",Toast.LENGTH_LONG).show(); } } }); |
توضیح کدها:
- در خط 1، به باتن خود با استفاده از متد setonclicklistener خاصیت کلیک شدن میدهیم.
- در خط 4، برای رادیو باتن اول یک شرط تعریف میکنیم تا در صورت کلیک شدن روی گزینهی شب پیغامی را به کاربر نشان دهد
- در خط 5، یک توست تعریف میکنیم و عبارتی که میخواهیم به کاربر نشان داده شود را مینویسیم
- در خط 7 و 8، برای رادیوباتن دوم نیز یک شرط و یک توست تعریف میکنیم.
حال از پروژهمان اجرا میگیریم
مشاهده میکنیم که اگر روی گزینهی شب کلیک کنیم و سپس گزینهی نتیجه را انتخاب کنیم، پیغامی در قسمت توست برای گزینهی شب درنظر گرفته بودیم را نشان میدهد و بالعکس
روش دوم:
میتوانید به صورت جدا به خود رادیو باتن نیز خاصیت کلیک شدن بدهیم و از باتن استفاده نکنیم
مثلا به رادیوباتن اول خاصیت کلیک شدن بدهیم
1 2 3 4 5 6 |
rb_shab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(getApplicationContext(),"شب کلیک شده است",Toast.LENGTH_LONG).show(); } }); |
توضیح کدها:
- در خط 1، با استفاده از متد setonclicklistener به رادیوباتن اول خاصیت کلیک شدن میدهیم
- در خط 4، توست را تعریف میکنیم.
سپس اجرا میگیریم
مشاهده میکنیم که وقتی روی گزینهی شب کلیک میکنیم، جملهی درنظرگرفته شده در توست را به ما نشان میدهد.
روش سوم:
میتوانیم شرطهایی را که تعریف کردیم، به صورت مستقیم بنویسیم تا روی هر گزینهای که کلیک شد، توست مربوط را نشان دهد
1 2 3 4 5 6 7 8 |
if (!rb_shab.isChecked()){ Toast.makeText(getApplicationContext(),"شب کلیک شده است",Toast.LENGTH_LONG).show(); } if (rb_roz.isChecked()){ Toast.makeText(getApplicationContext(),"روز کلیک شده است",Toast.LENGTH_LONG).show(); } } |
توضیح کدها:
- چون کد را در داخل onCreate قرار دادیم، بنابراین هنگام اجرا توست را نشان نمیدهد، به همین دلیل یک علامت تعجب در خط1 اضافه میکنیم و بهتر است کدهایی که در روش دوم نوشتیم را کامنت کنیم تا در هنگام اجرا گرفتن، آن کد اجرا نشود
سپس اجرا میگیریم.
برای بهتر درک کردن خاصیت RadioGroup، در لایهی activity_main.xml یک رادیوباتن در خارج از RadioGroup تعریف میکنیم وآن را copy/paste میکنیم تا دو رادیوباتن داشته باشیم
1 2 3 4 5 6 |
<RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/radioButton" android:text="این یک رادیوباتن تست است" |
سپس اجرا میگیریم
مشاهده میکنیم وقتی دو گزینهی رادیوباتن اضافه میشود، میتوانیم هردو را انتخاب کنیم، اما اگر رادیو باتن ما در داخل Radiogroup قرار داشت، نمیتوانستیم دو گزینه را در یک لحظه انتخاب کنیم.
کدهای کامل بخش لایه:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <RadioGroup android:id="@+id/radioGroup" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <RadioButton android:id="@+id/rb_MainActivity_shab" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="شب" /> <RadioButton android:id="@+id/rb_MainAvtiviy_roz" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="روز" /> <RadioButton android:id="@+id/radioButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="این رادیو باتن تست است"/> <RadioButton android:id="@+id/radioButton2" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RadioGroup> <Button android:id="@+id/b_MainActivity_result" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:text="نتیجه" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/radioGroup" /> </androidx.constraintlayout.widget.ConstraintLayout> |
کدهای بخش جاوا:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
package com.kazemieh.www.radiobutton; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.RadioButton; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final RadioButton rb_shab=findViewById(R.id.rb_MainActivity_shab); final RadioButton rb_roz=findViewById(R.id.rb_MainAvtiviy_roz); Button result=findViewById(R.id.b_MainActivity_result); result.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (rb_shab.isChecked()){ Toast.makeText(getApplicationContext(),"شب کلیک شده است",Toast.LENGTH_LONG).show(); } if (rb_roz.isChecked()){ Toast.makeText(getApplicationContext(),"روز کلیک شده است",Toast.LENGTH_LONG).show(); } } }); rb_shab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(getApplicationContext(),"شب کلیک شده است",Toast.LENGTH_LONG).show(); } }); if (!rb_shab.isChecked()){ Toast.makeText(getApplicationContext(),"شب کلیک شده است",Toast.LENGTH_LONG).show(); } if (rb_roz.isChecked()){ Toast.makeText(getApplicationContext(),"روز کلیک شده است",Toast.LENGTH_LONG).show(); } } } |
دانلود فایل
دانلود فایل
مطالب زیر را حتما بخوانید
-
نحوهی کار با ویدئوپلیر (Video Player) از طریق پوشهی raw
7.42k بازدید
-
آلرت دیالوگ (AlertDialog) چیست و نحوهی کار با آن چگونه است؟
7.02k بازدید
-
اسنکبار (Snackbar) در اندروید
4.56k بازدید
-
ّFloating action Button (فلوتینگ اکشن باتن) در اندروید
4.39k بازدید
-
نحوهی کار با فریم لیوت (FrameLayout)
4.83k بازدید
-
یک روش برای تمرکز در برنامهنویسی
3.27k بازدید
دیدگاهتان را بنویسید