آموزش Context menu در برنامه نویسی اندروید
سلام دوستان عزیز در این سری از آموزش های برنامه نویسی اندروید به آموزش Context menu در برنامه نویسی اندروید می پردازیم. context menu منوهای جالبی هستند که شاید نمونه آن را در اپلیکیشن های اندروید دیده باشید شاید برخی افراد با این منو آشنایی نداشته باشند به همین علت یک عکسی برای کاربران قرار می دهیم.
این منو ها کاربرد بسیار زیادی دارند در ادامه نحوه استفاده از آن را یاد میگیرید.
ما از سه کلاس برای Context menu استفاده می کنیم
1 2 3 | import android.view.ContextMenu; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; |
ما در اکتیوتی اصلی خودمون یک دکمه داریم که با کلیک کردن به صورت طولانی مدت بروی آن دکمه context menu ما نمایش داده می شود این منوها بیشتر در لیست کاربرد دارند
پس بخش Activity_main.xml همانند زیر میشود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Welcome to Programchi.ir" /> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Long press me!" /> </LinearLayout> |
حال به بخش کد برنامه می رویم
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 | package com.example.contextmenu; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.btn); registerForContextMenu(btn); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle("Programchi.ir"); menu.add(0, v.getId(), 0, "Action 1"); menu.add(0, v.getId(), 0, "Action 2"); menu.add(0, v.getId(), 0, "Action 3"); } @Override public boolean onContextItemSelected(MenuItem item) { if (item.getTitle() == "Action 1") { Toast.makeText(this, "Action 1 invoked", Toast.LENGTH_SHORT).show(); } else if (item.getTitle() == "Action 2") { Toast.makeText(this, "Action 2 invoked", Toast.LENGTH_SHORT).show(); } else if (item.getTitle() == "Action 3") { Toast.makeText(this, "Action 3 invoked", Toast.LENGTH_SHORT).show(); } else { return false; } return true; } } |
حالا ما باید دوتا void درست کنیم این void ها به صورت autogenerate ایجاد می شوند.
در onCreateContextmenu ما یک متغیر از نوع خود contextmenu و یک view داریم.
menu.setHeaderTitle : همانطور که از نام آن پیداست برای قرار دادن عنوان منو از آن استفاده می شود.
menu.add : برای اضافه کردن منو استفاده می شود . اولین ورودی آن میشود گروهی که آن منو در آن می خواهد قرار بگیرد و دوم ورودی آن یک id منحصر به فرد می ماند. سومی کاری که می خواهد انجام شود و اخری عنوان آن منو خواهد بود برای درک دقیق تر می توانید از این متن به ترتیب استفاده کنید ( groupId, itemId, order, title ) .
برویم به سراغ دومین void که برای انجام کار ها یا action ها استفاده می شود یعنی هر کدوم از آنها که کلیک شد چه کاری را انجام دهد.
این آموزش هم به پایان رسید.
موفق باشید.
سلام ی سوال دارم ، میشه مثلا دوتا دکمه تو ی صفحه داشته باشی بعد واسه هر دوش این منو رو گذاشت؟ راهنماییم کنین ممنون میشم.
سلام بله امکان پذیر است .
میشه راهنماییم کنید ؟؟
سلام بفرمایید چه راهنمایی کنیم هرچند کد خیلی ساده و واضح هست.