بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

اکشن بار دست ساز و خانگی خود را بسازید + تب (آموزش)

کاشی زاده  12 سال پیش  9 سال پیش
+114 0

آموزش ویدئویی مخصوص ساخت ActionBar بهمراه Sliding Mneu را از لینک زیر دریافت کنید .

 لینک آموزش


بازهم با شما هستید از سری مجموعه کد های دست ساز و خانگی ;)

خوب تو این سری از آموزش میخوایم نحوه ساخت اکشن بار بدون استفاده از لایبری خارجی و قابل اجرا بر روی همه ورژن های اندروید رو یاد بدیم .

ابتدا لایبری ساپورت ورژن 7 یا همون appcompat  رو به پروژه اضافی کنید تا بتونیم اکشن بارمون رو در همه Api ها استفاده کنیم .

خوب نوبت به ساخت اکشن بار میرسه .

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

در همین تایپک آموزش ساخت اکشن بار های مختلف و امکانات جانبی رو میزاریم.

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

حالا اکشن باری که دوست دارید پیاده کنید رو توی این لایه بسازید (منظور UI اکشن بار هست).

میریم سراغ کلاس اکتیویتی و کد نویسی .

ابتدا کد های زیر رو وارد کنید تا بریم سراغ تعریف عملکرد هر کد :

توجه داشته باشید کلاس اکتیوتی رو از ActionBarActivity اکستندز کنید .

 View view = inflater.inflate(R.layout.action_bar, null);
 ActionBar actionBar = getSupportActionBar();
	actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
	actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
	actionBar.setCustomView(view, new ActionBar.LayoutParams
(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));

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

در خط دوم اکشن بار رو تعریف میکنیم به همین ترتیب که میبینید و توجه داشته باشید زمانی که خواستید اکشن بار رو ایمپورت کنید حتما android.support.v7.app.ActionBar انتخاب کنید.

در خط بعدی شما با توجه به اینکه فقط یه اکشن بار خالی میخواید بسازید NavigationMode رو در حالت 

 ActionBar.NAVIGATION_MODE_STANDARD

قرار میدید حالت های دیگه برای استفاده از تب هست که بعدا آموزش میدیم .

در خط چهارم DisplayOptions رو از نوع ActionBar.DISPLAY_SHOW_CUSTOM قرار میدیم چون میخوایم یه ویو کاستوم رو بهش بدیم .

در خط پنجم هم ویو مورد نظر رو به اکشن بار نسب میدیم که view  همون لایه ساخته شده هست ، باگی که ممکن در ساخت این اکشن بار وجود بیاد این هست که اکشن بار شما ناقص باشه و کل صفحه رو پوشش نده که با استفاده از این کد که نوشتم این مشکل رفع میشه :

 new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT

در نهایت هم تم برنامتون رو از Theme.AppCompat بگیرید.

خوب به همین سادگی شما یک اکشن بار دست ساز بدون افزودن لایبری های سنگین مثل اکشن شرلوک تونستید بسازید و از همه مهمتر این هست که رو همه نسخه ها جواب میده .

 

در همین تاپیک آموزش استفاده از اکشن بار ها با استفاده از لایه menu  ، ساخت تب با استفاده از اکشن بار ،آموزش ساخت sarchView و ساخت  ActionMod  رو براتون در آینده میذارم .

 

موفق باشید :)

 

 

 

0 0
سلام لایبری ساپورت ورژن 7 چیه؟ (12 سال پیش)
+2 0
یه لایبری برای اندروید که میتویند داخل فولدر IDE پیدا کنید یا میتونید سرچ کنید و دانلود کنید (12 سال پیش)
0 0
از کجا دانلود کنم (12 سال پیش)
0 0
اگر مباحث تحریم نباشه و بتوانید آن ها را دور بزنید از طریق SDK manager می تونید آن را دانلود کنید در غیر اینصورت در اینترنت جستجو کنید پیدا خواهید کرد. (12 سال پیش)
0 0
من که راحت اختصاصی شو ساختم. (12 سال پیش)
+2 0
من فکر کنم لینکشو گذاشتم لینک (12 سال پیش)
+1 0
من فکر کنم لینکشو گذاشتم لینک (12 سال پیش)
0 0
این خط : View view = inflater.inflate(R.layout.action_bar, null) این بخش رو inflate(R.layout.action_bar, null) رو برام خطا میگیره... (The method inflate(byte[]) in the type Inflater is not applicable for the arguments (int, null)) (11 سال پیش)
0 0
Inflater با i بزرگ نوشته میشه، هرچند از این خط هایی که گذاشتین چیزی مشخص نیس. (11 سال پیش)
0 0
@ محسن : لینک (11 سال پیش)
+1 0
اینجا جا نمیشه ، توی پاسخ مشکلو نوشتم (11 سال پیش)
0 0
یک سوال کمی عمومی تر : توی همچین پروژه هایی minimun sdk ابتدای ایجاد پروژه انتخاب میکنیم بهتره چی باشه؟! (11 سال پیش)
+1 0
اکشن بار که از api 11 به بعد به اندروید اضافه شد اما اگه از android supprort v7 استفاده بشه مینیموم میتونه 8 هم باشه. (11 سال پیش)
+1 0
وقتی میزارم رو حالت مینیموم و کتابخونه رو ایمپورت میکنم، فایل R جاوا رو حذف میکنه!!!! حتما باید روی اندروید های بالاتر بزارم تو ارور نده؟! بخاطر همین سوال قبلی رو پرسیدم... (11 سال پیش)
+1 0
تو Android manifest تغییر میدین؟ (11 سال پیش)
+2 0
نه...اصلا...وقتی پروژه به این قسمت لینک امپورت میکنم...این خطاها رو میده : لینک و فایل r.java رو هم حذف میکنه...اما تو بعضی از نسخه ها مشکلی نداره...android 3.0 هم همینطوریه!!! (11 سال پیش)
+1 0
آها ، اینو بذارین رو بالاترین نسخه، چون این مینیموم رو نشون نمیده، بلکه target sdk رو نشون میده (11 سال پیش)
+1 0
مشکل R حل شد... اما بخش پاسخ پایین رو ارور میگیره (11 سال پیش)
+2 0
inflater رو که تعریف شده. دیگه کلاس Inflater رو از جلوش بردار (11 سال پیش)
0 0
توی خط دوم اررو میده . getSupportActionBar رو نمیشناسه. لینک (11 سال پیش)
+2 0
لینکتون باز نمیشه ! این ارور مربوط به لایبری شما هست احتمالا در ایمپورت کردن لایبری اشتباهی صورت گرفته یه بررسی بکنید اگر به نتیجه نرسیدید ، ارور مربوطه رو برام بفرستید . (11 سال پیش)
0 0
متشکرم . درست شد. getSupportActionBar رو به getActionBar تبدیل کردم حل شد. ولی روی API 8 که اجرا میکنم ارور میده. ولی روی API 15 بدون مشکل اجرا میشه. ممنون میشم راهنمایی کنین چجور میتونم رو همه API ها اجراش کنم (11 سال پیش)
+1 0
اگر میخای روی api 8 هم اجرا بشه باید android support v7 رو به پروژت اضافه کنی. و از همون دستور getSupportActionBar استفاده کنی (11 سال پیش)
0 0
دوستان من وقتی به پروژم Appcompat 7 اضافه میکنم فایل r.java حذف میشه واز تمام R های پروژه ایراد میگیره.چیکار کنم؟ (11 سال پیش)
0 0
لینک (11 سال پیش)
0 0
درسته ولی فکرنمیکنم مشکلم حل کنه مگه اون قسمت که گفتین ساپورت ورژن 4 داره که من اصلا پوشه libs ندارم که بخوام حذفش کنم. (11 سال پیش)
0 0
منم مشکل ایشون دارم (11 سال پیش)
0 0
من اکشن بار رو ساختم و کامل کار میکنه یه باتن هم گذاشتم که وقتی میرنی بازش میکنه.حالا سوال: برنامه هایی مثل گوگل پلی استور وقتی اون ایمج ویو(علامت نویگین درائر)رو میزنی یه انیمیشنی روش اجرا میشه و وقتی میبندی دوباره آیکون نویگیشن درائر با یه انیمیشنی بسته میشه. چطور این رو اجرا کنم؟مرسی (11 سال پیش)
0 0
ببیند شما دارید یه ویو کاستوم میسازید پس تو این حال باید خودتون براش انیمیشن بسازید یا اینکه از اکشن بار خود گوگل استفاده کنید که باید برید در موردش مطالعه کنید . (11 سال پیش)
0 0
درسته. به نظر شما ساختن اکشن بار کاستوم به غیر از حجم پایین تر چه مزیت دیگه ای داره که از این روش استفاده کنیم. آیا توجیهی براش وجود داره؟ (11 سال پیش)
+1 0
همونطور که از اسمش پیداست ، این قابلیت رو به شما میده تا هر چیزی که بخواین رو توی اکشن بار تغییر بدید . مهمترین قابلیتش هم همینه . (11 سال پیش)
0 0
محمد حسین بعد از اینکه این کارهای بالا رو انجام دادم. حالا باید توی اندروید منیفست هم تغییری بدم؟؟ اخه الان که پروژه رو اجرا می کنم ازم خطا میگیره که support-v7-appcompat] Could not find android-support-v7-appcompat.apk! (11 سال پیش)
0 0
سلام.بچه ها اصلا انگار کلاسی بنام ActionBarActivity وجود نداره (11 سال پیش)
0 0
سلام. من از این روش استفاده کردم .به نظر من که روش خوبیه. فقط یه مشکلی دارم اینه که یک تکست ویو دارم که به عنوان تایتل اکتیوتی استفاده می کنم. این تایتل باید داینامیک باشه و با توجه به اکتیویتی قبلی تغییر کنه. آیا در این روش میشه این کار را انجام داد؟ (11 سال پیش)
+1 0
اکشن بار رو در EnhancedActivity تعریف کنید و از اونجا در هر اکتیویتی مقدار تایتل رو عوض کنید . (11 سال پیش)
0 0
آیا میشه از این اکشن بار که خودتون آموزش دادی و Navigation drawer دست ساز که اونم خودتون آموزش دادی به طور همزمان استفاده کرد؟ آخه یکیش ساپورت 4 میخواد یکی 7 (11 سال پیش)
+1 0
بله ، فقط لایبری ساپورت appcompat رو اضافه کنید خودش شامل ورژن 4 هم میشه. (11 سال پیش)
0 0
خب من اینکارو کردم ولی دیگه ورژن چهار رو اینگار نمیشه ازش چیزی ایمپورت کرد :( میگم کلا واسه این دو کار یعنی اسلاید منو و اکشن بار چه تغییراتی باید توی منیفست انجام بشه؟ (11 سال پیش)
+1 0
هر تا آموزشش موجود هست میتونید مطالعه کنید به ترتیب ،http://answers.uncocoder.com/question/6053 و لینک (11 سال پیش)
0 0
همه ی اینا رو مو به مو رفتم. ولی هر بار یه اروری میده :(( (11 سال پیش)
+1 0
من با لایبرری داخل sdk پروژه رو ساختم ارور زیاد میداد اما وقتی ایبرری که محمد حسین در اول تاپیک لینکشو داده دانلود کردم و پروژه رو ساختم ارور ها بر طرف شد شاید مشکل شما هم همین باشه هم تو ورژن استاد جواب داد هم ورژن 22.3 (11 سال پیش)
0 0
منم لایبری ایشون رو دانلود کردم الان navigation رو ساختم بدون مشکل. ولی وقتی ساپورت 4 رو حذف میکنم و ساپورت 7 رو ایمپورت میکنم واسه اکشن بار ارورها شروع میشه . (11 سال پیش)
0 0
محمد حسین جان ، کد کاملا درست کار میکنه ولی یه مشکل کوچیک دارم باهاش اونم اینکه : وقتی اکتیویتی رو اجرا می کنم حدود 1 ثانیه یا کمتر اکشن بار به حالت نرمال خودشه و بعد استایلی که ما تعریف کردیم رو بخودش میگیره ، برای حل این مشکل باید چیکار کنم؟ (11 سال پیش)
0 0
ببخشید یه مشکل : وقتی متد دکمه ی menu رو تو اکتیویتی تعریف می کنم برای اینکه بعدش متد on click listener رو بهش اضافه کنم اروری نمیگیره ولی وقتی از امولیتور اجرا میکنم force close میده (11 سال پیش)
0 0
ارورتون رو بررسی کنید ببنید چی هست ، اگر متوجه نشدید ارور رو در پاسخ جداگانه در همین تاپیک درج کنید. (11 سال پیش)
0 0
خیلی خوبه دستتون درد نکنه ، ممنون بابت آموزش خوبتون خدا خیرت بده :) (11 سال پیش)
0 0
عــــــــــــالی بود؛ عالی! دمت گرم. (11 سال پیش)
+1 0
سلام من از این آموزش استفاده کردم! ولی وقتی میرم توی یه اکتیویتی دیگه اکشن بار از کار میفته و کار نمیده! چطوری باید درستش کنم؟ اصلا چطوری باید برای هر اکتیویتی یک لایه جدید اکشن بار ست کنم؟ ممنونم (11 سال پیش)
0 0
من هم مشکل شما رو دارم و بعد از پرسیدن فقط یک نفر جواب داد اون هم یک جواب اشتباه بود امیدوارم اینجا بشه جواب رو به دست اورد (11 سال پیش)
+1 0
کد های مربوط به اکشن بار رو در کلاس EnhancedActivity قرار بدید و اکتیوتی ها رو از این کلاس extends کنید . (11 سال پیش)
0 0
آقای کاشی زاده من آموزش اکشن بار شما رو دیدم. بهتر نیست به جای تعریف اینهمه کتابخونه و کدنویسی، مستقیما layout دستی خودمون رو توی layoutهای دیگه include کنیم؟ (11 سال پیش)
0 0
میشه از روش های مختلف استفاده کرد ولی بهترین روش به نظر بنده همین روش هست که در اون هیچ لایبری اضافی نشده جز یک لایبری که مربوط به خود اندروید هست . (11 سال پیش)
0 0
سپاسگذارم،میشه لطف کنید و در مورد EnhancedActivity یکم بیشتر توضیح بدید؟ (11 سال پیش)
0 0
بسیار ممنون...موفق باشد دوست عزیز (11 سال پیش)
+2 0
استاد در آموزش هاشون توضیحات کامل در رابطه با EnhancedActivity دادند . خلاصش میشه این : یک کلاس اکتیویتی هست همه اکتیوتی ها از اون extends میشن . (11 سال پیش)
0 0
میشه لطف کنید و بگید که کدوم قسمت از آموزش ها توضیح دادن؟ سپاسگذارم (11 سال پیش)
0 0
خاطرم نیست ، باید همون اویل باشه در ربابطه با G.CurrentActivity ببنید کجا مطلب گفتند . (11 سال پیش)
0 0
دوستان من UI برنامم رو به طور کامل طراخی کردم اما اخرش یادم اومد که اکشن بار بسازم.چطور میتونم لایه اکشن بار و بسازم بدون اینکه لایه های دیگ خراب نشن؟ (11 سال پیش)
0 0
تم برنامه رو چه جوری تو منیفست از Theme.AppCompat بگیرم؟ (10 سال پیش)
0 0
سلام و ممنون از آموزش خوبتون. اگر همزمان دو اسلاید بخوام ایجاد کنم که یکی از سمت چپ باز بشه و یکی هم از سمت راست، چه تغییراتی باید ایجاد کنم؟ در فایل root باید هردو رو تعریف کنم؟ اما اسم لایه اصلی فایل روت رو drawerlayout تعریف کردید که داخل فایل main برای اسلاید چپ در نظر گرفتیدش و اگر جدا یه Drawerlayout دیگه بخوام تعریف کنم در کلاس اصلی setContext رو برابر root قرار دادید. ممنون میشم کمکم کنید (9 سال پیش)
0 0
مشکل حل شد. باید gravity لایه سمت راست رو right قرار می دادم (9 سال پیش)
 برای این سوال 22 پاسخ وجود دارد.
پاسخ به سوال 
سعید  10 سال پیش
0 0

سلام خدمت شما کاشی زاده عزیز

ببخشید من از آموزش اکشن بار و اسلایدینگ منو در سایت خودتون http://learn.kashizadeh.com/

استفاده کردم

ولی هنگامی که برنامه میخواد باز بشه اول بک xml خالی میاد(در حد یک ثانیه) بعدش میره اکشن بار رو نشون میده

میشه بگید مشکل از کجاست و چگونه میتوانم آن را رفع کنم

ممنون

اینم یک عکس گیف لینک عکس

+1 0
این مورد رو قبلا حل کرده بودم ولی الان خاطرم نیست از چه مسیری رفته بودم باید کد هامو بررسی کنم که ممکنه زمان ببره. (10 سال پیش)
0 0
ممنون میشم اگه یکم وقت بذارید آخه من چند روزه درگیرشم سرچ کردم این کارها رو انجام دادم 1-عوض کردن تم appcompat 2- ساخت splash قبل از اکتیویتی شامل اکشن بار و اسلایدینگ (10 سال پیش)
پاسخ به سوال 
مهدی  10 سال پیش
0 0

درود

اگه بخوایم اکشن بار بغیر از اکتیویتی اول توی همه اکتیویتی هامون هم باشه 

چه کدی باید بزنیم ؟

+1 0
کد های مربوط به اکشن بار رو داخل ActivtyEnhanced میبرید ، در مورد این اکتیویتی استاد توضیحات لازم رو در بخش های ابتدایی آموزش دادند . (10 سال پیش)
0 0
آقای کاشی زاده اونوقت ActivityEnhanced رو از ActionBarActivity، extends کنیم ؟ (10 سال پیش)
0 0
حل شد! (10 سال پیش)
0 0
dezali@ لطف کن نمونه کدش رو بنویس. (10 سال پیش)
0 0
من طبق آموزش های آقای کاشی زاده پیش رفتم و هم اکشن بار رو درست کردم و هم اسلایدینگ منو رو و کامل و درست اجرا شد ولی مشکلی دارم که هیچکس هم کمک نکرد و اون همون مشکل شماست که در بالا گفتید در واقع اون موقع که نوشتم حل شد این بود که کد ها رو در ActivityEnhanced گذاشتم و برنامه اجرا شد ولی بعدش دیدم که همون مشکل پا برجاست. (10 سال پیش)
0 0
شما میتونید اکشن بار رو توی ActivityEnhanced قرار بدید تا همه جا استفاده بشه ولی برای Navigation Drawer باید یسری کد اضافه کنید که خودش برای هر اکتیویتی لایه روت رو بسازه و آتیم هارو توش قرار بده و در آخرم لایه منو رو بچسبونه بهش (10 سال پیش)
0 0
مرسی از جواب دادن آقای کاشی زاده گرامی، ولی واسه منی که تازه کارم اگه در این زمینه لینکی یا فیلمی بود که متوجه بشم و یاد بگیرم چطوری باید این کد را بنویسم خیلی کمک بزرگی بود! (10 سال پیش)
0 0
من کد مربوط به اکشن بار را توی ActivityEnhanced کپی کردم و این اکتیویتی را هم اکستندز از actionbaractivity قرار دادم ولی ارور میگیره آقای کاشی زاده ممنون میشم راهنمایی کنید . (10 سال پیش)
0 0
ببخشید حل شد abstract رو یادم رفته بود (10 سال پیش)
0 0
من یک کلاس activityenhanced درست کردم و کد ها رو تو اون گذاشتم، و بقیه اکتیویتی ها رو از اون اکستندز کردم، حالا همه چی درس کار میکنه، بجز دکمه ای که باید اسلایدینگ منو رو بیاره، کار نمیکنه، هیچ خطایی هم نمیده (10 سال پیش)
0 0
جناب کاشی زاده..((((این لینک ورژن 7 اگر ورژن 21 رو دانلود کنید میتونید از متریال دیزاین لولیپاپ هم استفاده کنید )))) این لینکی که برای دانلود لایبری داده بودید و رفتم حالا چطور دانلودش کنم ! باید ثبت نام کنم تو سایت یا..؟ (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .