دکمه های اکشن در اندروید
افزودن دکمه های Action
آموزش اندروید و دکمه های Action
آن چه در این آموزش فرا می گیرید:
- مشخص کردن Actionها در XML
- افزودن Actionها به Action Bar
- پاسخ به دکمه های Action
- دکمه ی برگشت برای Activity های سطح پایین
مواردی که باید مطالعه کرده باشید:
- فراهم کردن برگشت به activity قبلی
action bar به شما اجازه می دهد تا دکمه هایی را برای آیتم های action مرتبط با فعالیت جاری برنامه اضافه کنید. عناصری که مستقیماً در action bar با استفاده از یک آیکن یا متن نمایش داده می شوند به دکمه های action مشهور هستند. actionهایی که در action bar جا نمی گیرند و یا به اندازه ی کافی مهم نیستند در action overflow مخفی می شوند.
مشخص کردن Actionها در XML
همه ی دکمه های action و آیتم های موجود در action overflow در XMLی با عنوان menu resource تعریف شده اند. برای افزودن actionها به action bar یک فایل XML جدید داخل دایرکتوری res/menu/ ایجاد کنید.
به ازای هر آیتمی که قصد دارید در action bar ایجاد کنید، یک عنصر <item> اضافه نمایید. برای مثال:
res/menu/main_activity_actions.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <!-- Search, should appear as action button --> <item android:id="@+id/action_search" android:icon="@drawable/ic_action_search" android:title="@string/action_search" android:showAsAction="ifRoom" /> <!-- Settings, should always be in the overflow --> <item android:id="@+id/action_settings" android:title="@string/action_settings" android:showAsAction="never" /> </menu>
دانلود آیکن های action bar
برای اینکه بهترین آیکن و مناسب ترین آیکن را پیدا کنید، می توانید از آیکن هایی که در Action Bar Icon Pack گردآوری شده است استفاده کنید.
قطعه کد بالا نشان می دهد که action مربوط به Search می بایست به صورت یک دکمه و هنگامی که room در action bar ظاهر شد، نمایش داده شود، اما action مربوط به Settings همواره نمایش داده می شود. (به صورت پیش فرض، همه ی action ها در overflow نمایش داده می شود، اما اگر به طور صریح مشخص کنید که چه action ی در overflow نمایش داده شود، یک تمرین خوبی بشمار می آید.)
خصوصیت icon به یک ID منبع برای تصویر احتیاج دارد. نامی که به دنبال drawable@ می آید می بایست نام تصویری باشد که در دایرتکتوری res/drawable ذخیره شده است. برای مثال، "drawable/ic_action_search@" به ic_action_search.png اشاره می کند. به همین ترتیب، خصوصیت title از یک رشته منبع استفاده می کند که در فایل XML داخل دایرکتوری res/values تعریف شده است.
توجه: هنگام ایجاد آیکن ها و سایر تصاویر برنامه، ایجاد چندین نسخه متناسب با صفحات نمایش متفاوت حائز اهمیت است. |
اگر برنامه ی شما از کتابخانه های پشتیبان استفاده می کند برای سازگاری با نسخه های پایین اندروید مانند 2.1، خصوصیت showAsAction در فضای نام android: وجود ندارد. در عوض این خصوصیت در کتابخانه پشتیبان وجود دارد و شما می توانید فضای نام XML خودتان را تعریف کنید و از فضای نام به عنوان پیشوند خصوصیت استفاده کنید. برای مثال:
استفاده از فضای نام
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yourapp="http://schemas.android.com/apk/res-auto" > <!-- Search, should appear as action button --> <item android:id="@+id/action_search" android:icon="@drawable/ic_action_search" android:title="@string/action_search" yourapp:showAsAction="ifRoom" /> ... </menu>
افزودن Actionها به Action Bar
برای قرار دادن آیتم های منو در action bar، متد ()onCreateOptionsMenu را در activity پیاده سازی کنید. در این متد آیتم منو، در منو قرار داده می شود. این کار به وسیله ی inflator انجام می شود. مثلاً:
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu items for use in the action bar MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_activity_actions, menu); return super.onCreateOptionsMenu(menu); }
پاسخ به دکمه های Action
هنگامی که کاربر روی یکی از دکمه های Action یا آیتم های دیگر در action overflow کلیک می کند، سیستم متد ()onOpitonsItemSelected مربوط به activity شما را صدا می زند. وقتی دارید این متد را پیاده سازی می کنید، متد ()getItemId را فراخوانی کنید تا مشخص شود روی کدام آیتم کلیک شده است (ID برگردانده شده با مقداری که در خصوصیت android:id عنصر <item> مساوی می باشد.)
Title
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle presses on the action bar items switch (item.getItemId()) { case R.id.action_search: openSearch(); return true; case R.id.action_settings: openSettings(); return true; default: return super.onOptionsItemSelected(item); } }
private void openSettings() {
// TODO Auto-generated method stub
Toast.makeText(this, "Open Setting button pressed", Toast.LENGTH_SHORT).show();
}
private void openSearch() {
// TODO Auto-generated method stub
Toast.makeText(this, "Search button pressed", Toast.LENGTH_SHORT).show();
}
افزودن دکمه ی برگشت برای Activity های سطح پایین
تمام صفحات برنامه ی شما که ورودی اصلی برنامه نمی باشند (فعالیتهایی که در حقیقت "صفحه ی اصلی" نیستند) می بایست به کاربر با استفاده از دکمه ی UP در action bar راهی برای برگشت به صفحه ی والدشان ارائه دهند.
وقتی که از اندریود 4.1 یا بالاتر استفاده می کنید و یا هنگامی که از ActionBarActivity کتابخانه ی پشتیبان استفاده می کنید، پیاده سازی دکمه ی UP خیلی ساده و از طریق تعریف Activity والد در فایل manifest و فعال سازی دکمه UP در Action bar امکان پذیر است.
برای مثال، در زیر نحوه ی تعریف activity والد را در فایل manifest ملاحظه می فرمایید:
Title
<application ... > ... <!-- The main/home activity (it has no parent activity) --> <activity android:name="com.example.myfirstapp.MainActivity" ...> ... </activity> <!-- A child of the main activity --> <activity android:name="com.example.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.myfirstapp.MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myfirstapp.MainActivity" /> </activity> </application>
سپس آیکن را به عنوان دکمه ی UP با صدا زدن متد ()setDisplayHomeAsUpEnabled فعال کنید:
Title
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_displaymessage); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // If your minSdkVersion is 11 or higher, instead use: // getActionBar().setDisplayHomeAsUpEnabled(true); }
به این دلیل که سیستم حالا می داند که MainActivity والد DisplayMessageActivity می باشد، هنگام کلیک روی دکمه ی UP در این activity، سیستم به Activity والد بر می گرددو نیاز نیست که رویداد مربوط به دکمه ی UP را مدیریت و هندل کنید
- نوشته شده توسط مظاهر نصوحی
- بازدید: 13613