نمایش و حذف view ها با متد setVisibility

خانه » آموزش‌های تکمیلی » نمایش و حذف view ها با متد setVisibility
نمایش و حذف view ها با متد setVisibility
در این جلسه قصد دارم کاربرد متد setVisibility() را در برنامه نویسی اندروید بررسی کنم. به وسیله این متد می‌توانیم یک View را مخفی، حذف و یا نمایان کنیم. این سه حالت به ترتیب با تعیین پارامتر ورودی INVISIBLE و GONE و VISIBLE برای این متد انجام می‌شود. در ادامه مبحث به معرفی متد و هر یک از سه حالت ذکر شده در قالب یک پروژه عملی می‌پردازم.
معرفی متد setVisibility() به نام خدا. گاهی اوقات در طراحی صفحات یک برنامه اندرویدی (و البته سایر سیستم عامل‌ها) لازم است تا قسمتی از صفحه یا یک فرم، به عبارتی یک View تحت شرایط خاصی، از روی صفحه حذف شده و یا نمایش داده شود. برای انجام این کار در اندروید می‌توانیم از متد setVisibility() استفاده کنیم.
به عنوان مثال صفحه تنظیمات برنامه را درنظر بگیرید که قصد داریم با فعال شدن Switch Button اول توسط کاربر، یک Switch Button دیگر یا هر View مورد نیاز دیگری ظاهر شود و یا بلعکس؛ با فعال شدن یک دکمه سوئیچ، یک View دیگر از صفحه ح..

خانه » آموزش‌های تکمیلی » نمایش و حذف view ها با متد setVisibility

نمایش و حذف view ها با متد setVisibility

در این جلسه قصد دارم کاربرد متد setVisibility() را در برنامه نویسی اندروید بررسی کنم. به وسیله این متد می‌توانیم یک View را مخفی، حذف و یا نمایان کنیم. این سه حالت به ترتیب با تعیین پارامتر ورودی INVISIBLE و GONE و VISIBLE برای این متد انجام می‌شود. در ادامه مبحث به معرفی متد و هر یک از سه حالت ذکر شده در قالب یک پروژه عملی می‌پردازم.

معرفی متد setVisibility()

به نام خدا. گاهی اوقات در طراحی صفحات یک برنامه اندرویدی (و البته سایر سیستم عامل‌ها) لازم است تا قسمتی از صفحه یا یک فرم، به عبارتی یک View تحت شرایط خاصی، از روی صفحه حذف شده و یا نمایش داده شود. برای انجام این کار در اندروید می‌توانیم از متد setVisibility() استفاده کنیم.
به عنوان مثال صفحه تنظیمات برنامه را درنظر بگیرید که قصد داریم با فعال شدن Switch Button اول توسط کاربر، یک Switch Button دیگر یا هر View مورد نیاز دیگری ظاهر شود و یا بلعکس؛ با فعال شدن یک دکمه سوئیچ، یک View دیگر از صفحه حذف شود. یا یک فرم ثبت اطلاعات که با انتخاب یک گزینه CheckBox، یک TextView به فرم اضافه شود. کاربردهای زیادی برای این متد وجود دارد که نیازی به اشاره به آنها نیست.
در ادامه مبحث، نحوه استفاده از این متد و انواع پارامترهای ورودی آن را بررسی می‌کنیم.

پروژه تمرین متد setVisibility

ابتدا طبق مبحث آموزش ساخت پروژه در اندروید استودیو یک پروژه اندرویدی با نام setVisibility می‌سازم. اکتیویتی را از نوع Empty Activity و زبان را Java انتخاب کردم.
در مرحله نخست، layout اکتیویتی را به صورت زیر تکمیل می‌کنم که شامل یک TextView و سه Button است:

activity_main.xml

  <?xml version="1.0" encoding="utf-8"?>  <LinearLayout 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"      android:orientation="vertical"      tools:context=".MainActivity">        <TextView          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:id="@+id/txt_view"          android:text="متن آزمایشی"          android:background="#DF1616"          android:textColor="#fff"          android:textSize="20dp"          android:gravity="center"/>        <Button          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:id="@+id/invisible_btn"          android:layout_gravity="center"          android:text="پنهان کردن" />        <Button          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_gravity="center"          android:id="@+id/gone_btn"          android:text="پنهان کردن + حذف جایگاه" />        <Button          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_gravity="center"          android:id="@+id/visible_btn"          android:text="ظاهر کردن" />    </LinearLayout>  

سپس view ها را در اکتیویتی تعریف کرده و برای هر دکمه یک Listener (شنونده) می‌سازم که به صورت زیر تکمیل شده است:

MainActivity.java

  package ir.android_studio.setvisibility;    import androidx.appcompat.app.AppCompatActivity;    import android.os.Bundle;  import android.view.View;  import android.widget.Button;  import android.widget.TextView;    public class MainActivity extends AppCompatActivity {        Button invisibleBtn, goneBtn, visibleBtn;      TextView txtView;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);            invisibleBtn = findViewById(R.id.invisible_btn);          goneBtn = findViewById(R.id.gone_btn);          visibleBtn = findViewById(R.id.visible_btn);          txtView = findViewById(R.id.txt_view);            invisibleBtn.setOnClickListener(new View.OnClickListener() {              @Override              public void onClick(View view) {                    txtView.setVisibility(View.INVISIBLE);                }          });            goneBtn.setOnClickListener(new View.OnClickListener() {              @Override              public void onClick(View view) {                  txtView.setVisibility(View.GONE);              }          });            visibleBtn.setOnClickListener(new View.OnClickListener() {              @Override              public void onClick(View view) {                  txtView.setVisibility(View.VISIBLE);              }          });        }  }  

در listener هر سه دکمه، متد setVisibility برای txtView تعریف شده با این تفاوت که پارامتر ورودی در هر حالت تغییر کرده است:

  txtView.setVisibility();  

در دکمه اول یعنی “پنهان کردن” ورودی INVISIBLE به متد پاس داده شده. در صورت اجرای این دستور انتظار داریم TextView پنهان شود.
اما در دکمه دوم یعنی ” پنهان کردن + حذف جایگاه” ورودی GONE به متد پاس داده شده. تفاوت GONE با INVISIBLE در این است که علاوه بر پنهان کردن view مدنظر، جایگاهی که توسط آن اشغال شده نیز حذف می‌شود.
دکمه سوم هم همانطور که از نام آن پیداست، view ای که قبلا پنهان یا حذف شده را نمایان (VISIBLE) می‌کند.
پروژه را اجرا کرده و هر سه دکمه را تست می‌کنم تا نحوه کارکرد هرکدام را بهتر متوجه شوید:

در ابتدا، TextView با پس زمینه قرمز رنگ در بالای دکمه‌ها نمایش داده شده است. روی دکمه “پنهان کردن” کلیک می‌کنم:

با فراخوانی setVisibility(View.INVISIBLE) شاهد مخفی شدن TextView هستیم در عین حالی که جایگاه آن حفظ شده است.
برای ادامه تست روی دکمه “ظاهر کردن” کلیک می‌کنم تا TextView مجدد نمایش داده شود. این‌بار روی “پنهان کردن + حذف جایگاه” کلیک می‌کنم:

ملاحظه می‌کنید با فراخوانی setVisibility(View.GONE) علاوه بر مخفی شدن TextView جایگاه آن نیز حذف شده و view های بعد از آن به بالا منتقل شدند.
در نهایت با کلیک مجدد روی دکمه “ظاهر کردن” view حذف شده دوباره به layout اضافه شده و دکمه‌ها در جایگاه قبلی خود قرار می‌گیرند:

نکته: اینکه از GONE استفاده کنیم یا INVISIBLE به سلیقه و نوع کاربرد آن بستگی دارد.

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

مطالعه‌ی بیشتر:

https://developer.android.com/reference/android/view/View.html#INVISIBLE
https://developer.android.com/reference/android/view/View.html#GONE
https://developer.android.com/reference/android/view/View.html#VISIBLE

توجه : سورس پروژه درون پوشه Exercises قرار دارد

دانلود نسخه PDF این آموزش به همراه سورس پروژه
تعداد صفحات : ۸
حجم : ۱ مگابایت
قیمت : رایگان
دانلود رایگان با حجم ۱ مگابایت لینک کمکی این مطلب چقدر برایتان مفید بود؟ لطفا امتیاز دهید 4.2 / 5 ( 5 امتیاز ) آموزش‌های تکمیلی, آموزش‌های رایگان

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

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

دشمن ساروج سوربات پتاسیم استئارات منیزیم بنزوات سدیم منتول وانیل مونوسدیم گلوتامات صمغ عربی استئاریک اسید پودر تالک پرلیت خاک رنگبر روغن آرگان روغن جوجوبا تیو سولفات سدیم کراتین کتراک اسید تانیک پکتین کاراگینان پودر کاکائو بوراکس آلانتوئین صمغ عربی برای اپیلاسیون آمونیاک خانگی پروتئین وی پگاه کربومر ساختار فروکتوز

کتراک

صمغ عربی

مونو سدیم گلوتامات

اسید استیک

کربومر

کافور

خاک دیاتومه

کربن فعال

سیلیکون دی اکساید

آویسل

آنتی اکسیدان TBHQ

گلوتن ذرت

لانولین

روغن کندش

کافور

گلوتن

روغن فندوق

لاکتات کلسیم

منیزیم استئارات

روغن آووکادو

روغن درخت چای

روغن براهمی

روغن نارگیل

کتراک

سوربات پتاسیم

روغن بادام

شی باتر

ایزوتیازولین

روغن خراطین

روغن جوجوبا

مالتودکسترین

روغن آرگان

فوماریک اسید

خاک دیاتومه