نوار ابزار در اندروید
اگر به دنبال طراحی اپلیکیشن در مشهد یا به دنبال آموزش طراحی اپلیکیشن هستید این مطلب میتواند برای شما مفید باشد.
ارزیابی اجمالی
Toolbar (نوار ابزار) در Android Lollipop ، ورژن API 21 برای جایگزینی ActionBar معرفی شد. صورت و کارایی Toolbar شل خیس از ActionBar میتواند سفارشی گردد و کاربرد های دیگری نیز دارااست. زیرا Toolbarجزء ViewGroup ها میباشد پس هرجایی در layout قادر است قرار داده گردد. دقت نمایید که زیرا ViewGroup از کلاس View ارث بری دارااست پس Toolbar که ViewGroup میباشد، View نیز میباشد.
Toolbar با نرم افزار های تشکیلشده برای API 21 و فراتر به خیر و خوبی سازگار میباشد. البته Android کتابخانه های پشتیبانی AppCompat را آپ تو دیت نموده است تا بتوان از Toolbar در دستگاه های دارنده سیستم برهان Android ذیل خیس نیز به کار گرفت. در AppCompat ، نوار ابزار در کلاس androidx.appcompat.widget.Toolbar جای دارد.
دو طریق یا این که برهان برای به کار گیری از Toolbar وجود دارااست:
به کار گیری از Toolbar بجای ActionBar زمانی میخواهید تجهیزات بی آلایش ActionBar را داشته باشید (امکاناتی مثل منو، شرایط تعیین، ActionBarDrawerToggle و موردها شبیه) البته نیاز به سفارشی کردن ظواهر ActionBar داشته باشید.
به کار گیری از خصوصیت های خاص Toolbar برای زمانی که ActionBar نیاز شمارا پشتیبانی نمی نماید مثل اکران تعدادی نوار ابزار در کاغذ، نوار ابزار با عرضی کمتر از پهنا کاغذ و غیره.
مقایسه Toolbar با ActionBar
Toolbar در واقع یک تعمیم برای ActionBar میباشد. تفاوت های کلیدی که Toolbar را از ActionBar متمایز می نماید عبارتند از:
Toolbar یک View میباشد که مثل هر View دیگری می قدرت آن را در layout قرار بخشید
زیرا Toolbar یک View میباشد پس مثل هر View دیگری به راحتی می اقتدار آن را در جای دلخواه قرار بخشید، جابجا و در دست گرفتن کرد.
تعدادی Toolbar جداگانه میتواند در یک Activity مصرف شود.
بخاطر داشته باشید که Toolbar را می شود به صورت ActionBar نیز تنظیمات و بهره برد بهاین مفهوم که منویی که تا قبل از اینً در ActionBar قرار می گرفت نیز میتواند در Toolbar به به عبارتی صورت قرار داده گردد. اما ActionBar هنوز منسوخ نشده و در شرایطی که صرفا چیزی که نیاز دارید یک نوار اثبات در بالای ورقه میباشد که بتواند آیکون ها و یک دکمه رجوع و برگشت داشته باشد ، میتوانید با خاطر شل به به کار گیری از ActionBar ادامه دهید. اما درصورتی که تجهیزات بیشتری نیاز دارید می بایست از Toolbar استعمال نمایید.
به کار گیری از Toolbar بجای ActionBar
برای به کارگیری از Toolbar تحت عنوان ActionBar ، در آغاز باور نتایج نمائید که کتابخانه پشتیبانی AndroidX به فولدر build.gradle (Module: app) نرمافزار شما اضافه گردیده باشد:
dependencies {
...
implementation \"androidx.appcompat:appcompat:1.0.0\"
}
آن گاه ، می بایست ActionBar ارائه گردیده در تم اپ را حذف کنیم. بایستی تم نرمافزار خویش را تغییر تحول دهید تا از تمی ارث بری نماید که NoActionBar باشد. برای مثالً در کد ذیل از Theme.AppCompat.NoActionBar ارث بری گردیده:
اکنون برای داشتن نوار ابزار بایستی Toolbar را به فولدر layout اضافه فرمائید. یک کدام از مزایای استعمال از Toolbar قابلیت و امکان قرار دادن آن در جای دلخواه در شیت میباشد به عنوان مثالً در کد تحت Toolbar در بالای شیت قرار داده گردیده تا در جای ActionBar قرار بگیرد:
xmlns:app=\"http://schemas.android.com/apk/res-auto\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:fitsSystemWindows=\"true\"
android:orientation=\"vertical\">
android:id=\"@+id/toolbar\"
android:minHeight=\"?attr/actionBarSize\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"
app:titleTextColor=\"@android:color/white\"
android:background=\"?attr/colorPrimary\">
نکته: کد \"android:fitsSystemWindows=\"true را به تگ ریشه layout ی که Toolbar دارااست اضافه فرمایید تا طول Activity به صدق احتساب گردد.
زیرا Toolbar از کالا ViewGroup میباشد و مثل هر View دیگری قادر است استیل و جای آن در ورقه تغییر و تحول داده خواهد شد، هنگامی آن را در layout قرار می دهید جای آن را مثل بقیه View ها بایستی مشخص و معلوم فرمایید در غیر اینصورت ممکن میباشد Toolbar در جای نادرست در شیت چشم گردد و یا این که حتیدر برگه اکران داده نشود.
در مرحله آنگاه برای اینکه از Toolbar بجای ActionBar استعمال نمائید می بایست از متد setSupportActionBar(toolbar) در Activity یا این که Fragment استعمال نمائید.
نکته: اعتنا نمایید که از کلاس androidx.appcompat.widget.Toolbar به کار گیری فرمایید و از کلاس android.widget.Toolbar استعمال نکنید.
// Mohamadreza Amani
// for support contact me at: help4usr@gmail.com
package com.amani.example;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// Find the toolbar view inside the activity layout
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
// Sets the Toolbar to act as the ActionBar for this Activity window.
// Make sure the toolbar exists in the activity and is not null
setSupportActionBar(toolbar);
}
// Menu icons are inflated just as they were with actionbar
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}
در مرحله سپس بایستی منوها را تعریف و تمجید کنیم. پوشه res/menu/menu_main.xml با کد پایین را بسازید. در خط ماقبل پایان کد بالا getMenuInflater().inflate(R.menu.menu_main, menu) میبینید که از این پوشه برای تولید منو ها به کار گیری کرده ایم.
xmlns:app=\"http://schemas.android.com/apk/res-auto\">
android:id=\"@+id/miCompose\"
android:icon=\"@drawable/ic_compose\"
app:showAsAction=\"ifRoom\"
android:title=\"Compose\">
android:id=\"@+id/miProfile\"
android:icon=\"@drawable/ic_profile\"
app:showAsAction=\"ifRoom|withText\"
android:title=\"Profile\">