atpf67
چهارشنبه 13 اسفند 1393, 09:52 صبح
بسم الله الرحمن الرحیم
با سلام و عرض تسلیت به مناسبت شهادت جانسوز بی بی فاطمه زهرا (سلام الله علیها) خدمت حضرت بقیة الله (عج) و شیعیان و محبان اهل بیت (علیهم السلام).
توی این تاپیک و با توجه نیاز دوستان قصد دارم طریقه سفارشی کردن اکشن بار رو آموزش بدم، امیدوارم که مفید واقع بشه.
برای اینکار ابتدا توی پروژه یه LinearLayout بسازید به اسم: actionbar_view.xml
برید توی کد های layout تون و خاصیت oreantation رو از vertical به horizontal تغییر بدید: android:orientation="horizontal"
و خاصیت gravity رو به layout اضافه کرده و مقدارش رو برابر center_vertical|right قرار بدید: android:gravity="center_vertical|right"
و خاصیت bacground و خاصیت margin هم به صورت زیر مقدار دهی کنید:
android:layout_margin="3dp"
android:background="#c7c7c7"
خب حالا باید بسته به نیازی که دارید یک سری کنترل ها یی رو توی این layout قرار بدید، من در اینجا از کنترل های زیر استفاده می کنم:
1- DigitalClock: برای نشان دادن ساعت در ActionBar
2-View: عرض اون رو 0 بدید : android:layout_width="0dp"
ارتفاع رو wrap_content یا match_parent قرار بدید: android:layout_height="match_parent"
و خاصیت weight رو برابر با 1 قرار بدید: android:layout_weight="1"
3- TextView: برای نمایش نام اپلیکیشن و id اون رو actionbar_title میذاریم : android:id="@+id/actionbar_title"
و خاصیت text اون رو با app_name مقدار دهی میکنیم به این صورت: android:text="@string/app_name"
4- ImageView: برای نمایش دادن آیکن اپلیکیشن و id اون رو actionbar_icon میذاریم: android:id="@+id/actionbar_icon"
و مقدار src یا همون سورس رو آیکن اپلیکیشن قرار بدید: android:src="@drawable/ic_launcher"
تا اینجای کار کد actionbar_view.xml باید به صورت زیر باشد:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dp"
android:background="#c7c7c7"
android:gravity="center_vertical|right"
android:orientation="horizontal" >
<DigitalClock
android:id="@+id/digitalClock1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DigitalClock" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/actionbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:id="@+id/actionbar_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:src="@drawable/ic_launcher" />
</LinearLayout>
خب کار طراحی layout برای اکشن بار تموم شد، حالا میریم سراغ فایل MainActivity.java و ادامه ی کار:
فایل MainActivity رو باز کنید:
**نکته: Activity باید از "ActionBarActivity" توسعه یافته (extends) باشد.
ابتدا دو متد onCreateOptionsMenu و onOptionsItemSelected کامنت یا حذف می کنیم.
حالا لازمه تا از layou ی که برای اکشن بار طراحی کردید یک View بسازید، برای این کار توی متد onCreate بعد از setContentView به صورت زیر یک View با نام actionBarView بسازید و مقداردهی کنید: View actionBarView = getLayoutInflater().inflate(R.layout.actionbar_vie w, null);
و در ادامه کدهای زیر را بنویسید:
getSupportActionBar().setNavigationMode(android.su pport.v7.app.ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setDisplayOptions(android.su pport.v7.app.ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(actionBarView) ;
برای نسبت دادن عمل کلیک به آیتم های اکشن بار هم با عمل find این کار را انجام بدید. مثلاَ برای نسبت دادن عمل کلیک به آیکن اپلیکیشن به صورت زیر عمل کنید:
findViewById(R.id.actionbar_icon).setOnClickListen er(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Icon Clicked", Toast.LENGTH_LONG).show();
}
});
خب تمام شد دوستان فقط من سورس پروژه رو قرار نمی دم چون میخوام خودتون بسازید که هم خوب آشنا بشید با روش کار و هم در پایان کار لذت ببرید.
ان شاءالله اگر عمری باقی بود طریقه ساخت ListView سفارشی هم آموزش خواهم داد.
پیروز و موفق باشید- یا علی
با سلام و عرض تسلیت به مناسبت شهادت جانسوز بی بی فاطمه زهرا (سلام الله علیها) خدمت حضرت بقیة الله (عج) و شیعیان و محبان اهل بیت (علیهم السلام).
توی این تاپیک و با توجه نیاز دوستان قصد دارم طریقه سفارشی کردن اکشن بار رو آموزش بدم، امیدوارم که مفید واقع بشه.
برای اینکار ابتدا توی پروژه یه LinearLayout بسازید به اسم: actionbar_view.xml
برید توی کد های layout تون و خاصیت oreantation رو از vertical به horizontal تغییر بدید: android:orientation="horizontal"
و خاصیت gravity رو به layout اضافه کرده و مقدارش رو برابر center_vertical|right قرار بدید: android:gravity="center_vertical|right"
و خاصیت bacground و خاصیت margin هم به صورت زیر مقدار دهی کنید:
android:layout_margin="3dp"
android:background="#c7c7c7"
خب حالا باید بسته به نیازی که دارید یک سری کنترل ها یی رو توی این layout قرار بدید، من در اینجا از کنترل های زیر استفاده می کنم:
1- DigitalClock: برای نشان دادن ساعت در ActionBar
2-View: عرض اون رو 0 بدید : android:layout_width="0dp"
ارتفاع رو wrap_content یا match_parent قرار بدید: android:layout_height="match_parent"
و خاصیت weight رو برابر با 1 قرار بدید: android:layout_weight="1"
3- TextView: برای نمایش نام اپلیکیشن و id اون رو actionbar_title میذاریم : android:id="@+id/actionbar_title"
و خاصیت text اون رو با app_name مقدار دهی میکنیم به این صورت: android:text="@string/app_name"
4- ImageView: برای نمایش دادن آیکن اپلیکیشن و id اون رو actionbar_icon میذاریم: android:id="@+id/actionbar_icon"
و مقدار src یا همون سورس رو آیکن اپلیکیشن قرار بدید: android:src="@drawable/ic_launcher"
تا اینجای کار کد actionbar_view.xml باید به صورت زیر باشد:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dp"
android:background="#c7c7c7"
android:gravity="center_vertical|right"
android:orientation="horizontal" >
<DigitalClock
android:id="@+id/digitalClock1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DigitalClock" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/actionbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:id="@+id/actionbar_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:src="@drawable/ic_launcher" />
</LinearLayout>
خب کار طراحی layout برای اکشن بار تموم شد، حالا میریم سراغ فایل MainActivity.java و ادامه ی کار:
فایل MainActivity رو باز کنید:
**نکته: Activity باید از "ActionBarActivity" توسعه یافته (extends) باشد.
ابتدا دو متد onCreateOptionsMenu و onOptionsItemSelected کامنت یا حذف می کنیم.
حالا لازمه تا از layou ی که برای اکشن بار طراحی کردید یک View بسازید، برای این کار توی متد onCreate بعد از setContentView به صورت زیر یک View با نام actionBarView بسازید و مقداردهی کنید: View actionBarView = getLayoutInflater().inflate(R.layout.actionbar_vie w, null);
و در ادامه کدهای زیر را بنویسید:
getSupportActionBar().setNavigationMode(android.su pport.v7.app.ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setDisplayOptions(android.su pport.v7.app.ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(actionBarView) ;
برای نسبت دادن عمل کلیک به آیتم های اکشن بار هم با عمل find این کار را انجام بدید. مثلاَ برای نسبت دادن عمل کلیک به آیکن اپلیکیشن به صورت زیر عمل کنید:
findViewById(R.id.actionbar_icon).setOnClickListen er(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Icon Clicked", Toast.LENGTH_LONG).show();
}
});
خب تمام شد دوستان فقط من سورس پروژه رو قرار نمی دم چون میخوام خودتون بسازید که هم خوب آشنا بشید با روش کار و هم در پایان کار لذت ببرید.
ان شاءالله اگر عمری باقی بود طریقه ساخت ListView سفارشی هم آموزش خواهم داد.
پیروز و موفق باشید- یا علی