میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

Dynamic تعریف کردن action bar در اندروید

با سلام خدمت همه دوستان در مقاله قصد داریم در مورد Dynamic تعریف کردن action bar در اندروید در خدمت شما عزیزان باشیم

 View هایی با پیاده سازی اختصاصی در action bar

می توانید یک view اختصاصی به action bar اضافه نمایید. برای مثال، یک button یا text field در نوار ابزار اپلیکیشن خود داشته باشید.

برای این منظور، لازم است متد setCustomView از کلاس ActionView را بکار ببرید. سپس بایستی با فراخوانی متد () setDisplayOptions و ارسال پارامتر ActionBar.DISPLAY_SHOW_CUSTOM به آن  امکان نمایش view های اختصاصی در toolbar را فعال سازی نمایید.

به طور مثال، می توانید یک فایل layout تعریف کنید که دربردارنده ی المان EditText می باشد.

 

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/searchfield"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="textFilter" >
</EditText>

این layout را می توان به وسیله ی کد زیر به action bar در activityمورد نظر متصل کرد. تکه کد زیر علاوه بر متصل کردن ،layout یک گوش فراخوان یا listener نیز به custom view الحاق می کند.

 

package com.vogella.android.actionbar.customviews;
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getActionBar();
// add the custom view to the action bar
actionBar.setCustomView(R.layout.actionbar_view);
EditText search = (EditText) actionBar.getCustomView().findViewById(
R.id.searchfield);
search.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
Toast.makeText(MainActivity.this, "Search triggered",
Toast.LENGTH_LONG).show();
return false;
}
});
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM
| ActionBar.DISPLAY_SHOW_HOME);
}
}

 


Action view

Action view یک کامپوننت UI یا widget هست که بجای دکمه ی آیتم ( actionدر نوار ابزار) نمایش داده می شود. با استفاده از این ویژگی می توانید یک آیتم ( action) را با آبجکت Progressbar یا هر view مجاز دیگری جایگزین نمایید. به منظور تعریف یک action view جایگزین برای آیتم (action) در toolbar می توانید خصیصه android:actionLayout (attribute ) را جهت ایجاد فایل layout و خصیصه ی android:actionViewClass  را جهت تعریف widget class مورد استفاده قرار دهید.

این جایگزینی در تصاویر زیر به نمایش گذاشته شده است.

widget class
 

Activity زیر آیکون را در زمان اجرا برنامه با action view ای که حامل یک آبجکت ProgressBar می باشد، جایگزین می نماید.

 

package com.vogella.android.actionbar.progress;
import android.app.ActionBar;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
private MenuItem menuItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME
| ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_load:
menuItem = item;
menuItem.setActionView(R.layout.progressbar);
menuItem.expandActionView();
TestTask task = new TestTask();
task.execute("test");
break;
default:
break;
}
return true;
}
private class TestTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
// Simulate something long running
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
menuItem.collapseActionView();
menuItem.setActionView(null);
}
};
}

کد زیر، محتوای layout مورد استفاده ی action view را نشان می دهد.

 

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/progressBar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ProgressBar>

کد زیر فایل های XML که برای منو استفاده می شود را نشان می دهد.

 

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_settings"
android:orderInCategory="100"
android:showAsAction="always"
android:title="Settings"
/>
<item
android:id="@+id/menu_load"
android:icon="@drawable/navigation_refresh"
android:orderInCategory="200"
android:showAsAction="always"
android:title="Load"/>
</menu>

امیدواریم  آموزش Dynamic تعریف کردن action bar در اندروید نیز برای شما مفید واقع شده باشد و ادامه آموزش برنامه نویسی اندروید رو دنبال کنید . برای مطالعه پست‌ها بیشتر ، ما را در مدرسه کدنویسی تلگرام  و یا در تی جوان اینستاگرام دنبال کنید.

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

 

ارسال دیدگاه

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

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

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