چطور می تونم کمکتون کنم؟

آموزش برنامه نویسی به زبان اندروید (قسمت ششم)

اضافه کردن Action Buttons

 

 

 

اکشن بار به شما این امکان را می‌دهد تا دکمه‌های مهم‌ترین آیتم‌های اکشن را با توجه به محتوای کنونی اپلیکیشن، به اکشن بار اضافه کنید. مواردی که به طور مستقیم توسط یک آیکون یا متن در اکشن بار نمایش داده می‌شوند، به عنوان Action Buttons شناخته می‌شوند. اکشن ‌هایی که در اکشن بار قرار نمی‌گیرند یا خیلی مهم نیستند و یا در سر ریز (overflow)  پنهان شده‌اند.

مشخص کردن Actions در XML

تمام دکمه‌های اکشن و سایر آیتم‌ها را می‌توان در سر ریز که در یک XML menu resource  تعریف شده‌ است، مشاهده کرد. برای اضافه کردن اکشن‌ها به اکشن بار باید از آدرس res/menu/  پروژه خود یک فایل جدید XML  بسازید. سپس یک المان به هر آیتمی که می‌خواهید در اکشن بار خود داشته باشید، اضافه کنید. به طور مثال:

res/menu/main_activity_actions.xml
              android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="ifRoom" />
   
              android:title="@string/action_settings"
          android:showAsAction="never" />

 

این کار نشان می‌دهد که Search action  باید وقتی فضای کافی در اکشن بار وجود دارد، به عنوان یک دکمه اکشن نمایش داده ‌شود. اما Setting action باید همواره در سر ریز قرار داشته باشد.

خصوصیت icon  به یک ID  منبع برای یک عکس احتیاج دارد.  اسمی که بعد از @drawable/  می‌آید باید اسم یک عکس bitmap باشد که قبلاً در آدرس res/drawable/  پروژه‌ خود ذخیره کرده‌اید. به عنوان مثال، @drawable/ic_action_search  به ic_action_search.png  اشاره می‌کند. به علاوه خصوصیت title  از یک منبع رشته‌ای استفاده می‌کند که توسط یک فایل XML  در آدرس res/values/  پروژه شما تعریف شده است. ( به بخش آموزشی سوم مراجعه شود.)

اگر اپلیکیشن شما از Support Library برای سازگاری در نسخه‌های پایین مانند اندروید 2.1  استفاده می‌کند، خصوصیت  showAsAction  در android:  قابل دست رس نیست. در عوض این خصوصیت توسط Support Library  ارائه داده شده است و شما باید اسم XML  خود را تعریف کرده و آن را به عنوان پیشوند اسم خصوصیت استفاده کنید. )یک اسم XML  دل خواه بهتر است بر اساس اسم برنامه ساخته شود. اما می‌تواند هر اسمی باشد و تنها با فایل‌هایی که تعریف کرده‌اید در ارتباط است.) به طور مثال:

res/menu/main_activity_actions.xml

      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
   
              android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="ifRoom"  />
    ...

 

اضافه کردن اکشن به اکشن بار

برای قرار دادن آیتم‌های منو در اکشن بار، متد صدا زدن onCreateOptionsMenu()  را در فعالیت خود اجرا کنید تا اجزاء menu  در منبع منو وارد شوند. به عنوان مثال:

@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);
}

پاسخ دادن به دکمه‌های اکشن

زمانی که کاربر یکی از دکمه‌های اکشن یا یک آیتم دیگر را که در سر ریز است  را فشار بدهد، سیستم متد صدا زدن onOptionsItemSelected() را می‌خواند. در اجرای این متد، getItemId()  در MenuItem داده شده صدا زده می‌شود تا مشخص شود کدام  آیتم فراخوانده شده است.

@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);
    }
}

اضافه کردن دکمه برای فعالیت‌های سطح پایین

تمام صفحات نمایش در اپلیکیشن شما که در ورودی اولیه اپلیکیشن نیستند (فعالیت‌هایی که در صفحه اصلی یا Home نیستند)، باید به کاربر راهی برای گشتن در صفحه نمایش اصلی اپلیکیشن سایر قسمت‌ها (به ترتیب وجود)، بدهد.

هنگام اجرای اندروید 4.1 (API level16)  و یا نسخه‌های بالاتر، یا به هنگام استفاده از ActionBarActivity  در Support Library، رفتن به قسمت بالا نیازمند این است که شما از طریق فایل مانیفست به فعالیت والد اعلام کنید و دکمه بالا را در اکشن بار فعال سازید. به طور مثال در کد زیر می‌توانید ببینید که چطور به یک فعالیت والد در فایل مانیفست اعلام حضور کنید:


    ...
   
            android:name="com.example.myfirstapp.MainActivity" ...>
        ...
   
   
            android:name="com.example.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
       
                    android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
   

سپس آیکون دکمه بالا را با فرخوانی setDisplayHomeAsUpEnabled() ، فعال کنید.

@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  می‌باشد، هنگامی که کاربر دکمه بالا را بزند، سیستم به طور خودکار کاربر را به فعالیت والد هدایت می‌کند.

طراحی سایت,وبرند,وب رند,webrend,اندروید,ساخت برنامه اندرویدی,برنامه نویسی به زبان اندروید,زبان اندروید,آموزش اندروید,ساخت اکشن بار,اکشن بار در اندروید,طراحی فلت