آموزش CalendarView فارسی در برنامه نویسی اندروید
سلام دوستان امیدوارم حالتان خوب باشد در این سری از آموزش برنامه نویسی اندروید به آموزش CalendarView فارسی در برنامه نویسی اندروید می پردازیم نام دیگر آن PersianCalendarView است این کتاب خانه بسیار قدرتمند است و در بیشتر آپ های ایرانی مورد استفاده قرار گرفته است در ادامه می توانید پیش نمایشی از آن را مشاهده کنید با ما همراه باشید.
حجم آن کمی بالا است ولی کامل است.
برای استفاده از این کتاب خانه باید ابتدا آن را به پروژه اضافه کنید.
ابتدا وارد فایل Build.gradle از نوع Top Level شده و در بخش repositories خط زیر را اضافه کنید.
1 2 3 | repositories { maven { url "https://jitpack.io" } } |
وارد فایل Build.gradle از نوع Module شده و در بخش dependencies خط زیر را اضافه کنید.
1 2 3 | dependencies { compile 'com.github.roojin:persian-calendar-view:1.2.1' } |
سپس پروژه را sync کنید. علت خطاهای گریدل را قبلا بررسی کرده ایم کافی است در سایت واژه Gradle را جستجو کنید.
برای اینکه Calendar را در Layout خود قرار دهید از کد زیر استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 | <ir.mirrajabi.persiancalendar.PersianCalendarView android:id="@+id/persian_calendar" android:layout_width="match_parent" android:layout_height="290sp" app:pcv_colorBackground="#292929" app:pcv_colorDayName="#bab6b6" app:pcv_colorHoliday="#ffd506" app:pcv_colorHolidaySelected="#f1f2f3" app:pcv_colorNormalDaySelected="#d9d9d9" app:pcv_colorNormalDay="#f3f4f5" app:pcv_eventUnderlineColor="#02f0f0"/> |
app:pcv_colorBackground : رنگ پس زمینه را تنظیم می کند.
app:pcv_colorDayName : رنگ نام روز را تنظیم می کند.
app:pcv_colorHoliday : رنگ روز های تعطیل را تنظیم می کند.
app:pcv_colorHolidaySelected : رنگ روز تعطیل انتخاب شده را تنظیم می کند.
app:pcv_colorNormalDaySelected : رنگ روز های عادی انتخاب شده را تنظیم می کند.
app:pcv_colorNormalDay : رنگ روز ها را تنظیم می کند.
app:pcv_eventUnderlineColor : رنگ زیر خط را تنظیم می کند.
برای handle کردن آن در اکتیویتی از کد زیر استفاده کنید.
1 2 3 | PersianCalendarView calendarView = (PersianCalendarView) findViewById(R.id.persian_calendar); PersianCalendarHandler calendarHandler = persianCalendarView.getCalendar(); PersianDate today = calendar.getToday(); |
این کتاب خانه شامل Event های ملی ایران می باشد ولی اگر خواستید یک Event خاص تعریف کنید از کد زیر استفاده کنید.
1 2 3 | calendarHandler.addLocalEvent(new CalendarEvent(calendar.getToday(), "Custom event", false)); calendarHandler.addLocalEvent(new CalendarEvent(today.clone().rollDay(12,true), "Custom event 2", true)); calendarHandler.addLocalEvent(new CalendarEvent(new PersianDate(1399,1,10), "Custom event 2", true)); |
سه نوع Event تعریف کردیم اولی که نامش Custom event است و برای روز جاری تنظیم شده است.
دویمن Event که نامش Custom Event 2 است و بروی 12 روز بعد تنظیم شده است.
سومین Event هم برای تاریخ خاصی تنظیم شده است.
اگر می خواهید رویداد یا همان Event روز خاصی را به دست بیارید مثل زیر عمل کنید.
1 2 3 4 5 | PersianDate today = calendar.getToday(); calendarHandler.getAllEventsForDay(today); calendarHandler.getLocalEvents(); calendarHandler.getLocalEventsForDay(today); calendarHandler.getOfficialEventsForDay(today); |
کد بالا رویداد مربوط به امروز را به دست می آورد.
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
لطفا آموزش لود PDF از SDCARD رو در برنامه به صورت مستقیم بگید ، خیلی نیازش دارم
با تشکر از سایت عالی و کاملتون
منظور شما از مستقیم بدون استفاده از کتاب خانه است ؟
با سلام
از آموزش های خوبتون ممنونم.میشه این آموزش رو با جزییات بیشتری بگید . مثلا هر کدوم کجا نوشته میشن؟ نمی دونم چرا خطا دارم
در چه بخشی خطا دارید ؟
سلام .
مثلا تو MainActivity عبارت persianCalendarVieW رو قرمز نشون میده و R , calender رو هم قرمز نشون میده .اندروید2.3.3 دارم.ممنون
کتاب خانه را اضافه کردید ؟
شما باید مشکل کش داشته باشید اگر کتاب خانه را اضافه کردید از منوی File گزینه ی Invalidate Caches/Restart را بزنید مشکلتان برطرف می شود.
با سلام و تشکر از سایت خوب و تدریس عالی شما
من می خوام با استفاده از این کتابخانه رویداد شخصی بنویسم و روز هایی که رویداد من هست رنگش عوض بشه و با رویداد های خودش کاری نداشته باشم
اگر میشه راهنمایی فرمایید
با تشکر
سلام و خسته نباشید.. من این رو به اندروید استودیوم ایمپورت کردم و کدهایی که گفتید برای گذاشتن در Layout رو هم قرار دادم ولی نمیدونم چرا موقع اجرا نشون نمیده در بعضی کدهای xml اش دیدم که visibility ش رو gone گذاشته بود که visible هم کردم بازم مشکل حل نشد… میتونید راهنماییم کنین لطفا
سلام و درود کتاب خانه تست شد مشکلی ندارد فقط دقت کنید minsdk رو برابر با 17 قرار دهید ممکن است در هنگام لود خطایی پیش بیاید بخش Logcat رو هم بررسی کنید اگر از eclipse استفاده می کنید این کتاب خانه با eclipse تست نشده است .
موفق باشید.
با سلام
آیا امکانش هست که روزهای خاصی از تقویم که ما تعیین میکینیم رنگ پس زمینه ان عوض شود . اگر هست چگونه . با تشکر
فکر می کنم دستورات زیر شاید به کارتان بیادش.
موفق باشید.
دقیقا کدوم خط کد مربوط به تغییر رنگ روز مورد نظر و دلخواه ماست ؟
سلام
من با aide گوشی نمیتونم این کتابخونه رو دانلود کنم لطفا اگه کسی دانلود کرده برام بفرسته
با سلام زمان وارد کردن کتابخونه به استودیو این ارور رو دارم
Error:(24, 13) Failed to resolve: com.github.roojin:persian-calendar-view:1.2.1
Show in FileShow in Project Structure dialog
قندشکن باید فعال باشد.
از آموزش زیر استفاده کنیدو
http://programchi.ir/?s=gradle+failed+sync
موفق باشید.
روشنه چند تا از ارور ها رو رفع کرد ولی این ارور به هیچ کدومشون رفع نشد به سایت گیت هاب رفتم ورژن عوض شده بود وارد کردم ولی متاسفانه باز هم سینک نشد و همچنان این ارور رو دارم
به تازگی تحریم ها سخت گیرانه تر شده البته از این نگذریم که ممکن است ورژن Sdk شما کمی پایین باشد. شما باید از پ***ر**وک***س***ی های غیر از آمریکایی مثل چینی و… استفاده کنید. (کتاب خانه تست شد مشکلی ندارد.)
موفق باشید.
با سلام خدمت شما ببخشید یه مشکل لطفان دوستان کمک کنن من میخوام به جای اینکه پیغام Tost نشون بده بریزه تو تکست ویو اگه میشه بگید چه کدی باید بزنم تکت ویو تعریف کردم ولی نمیدونم چه جوری ست تکست کنم
سلام و درود لینک زیر را مورد بررسی قرار دهید.
https://programchi.ir/2017/07/16/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-textview-%d8%af%d8%b1-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a7%d9%86%d8%af%d8%b1%d9%88%db%8c%d8%af/
موفق باشید.
باسلام من میخوام این رویداد هر روز رو بریزم
تو این تکست ویو
هر کاری میکنم نمیتون نمیدونم چه جوری بریزم
سلام
کد زیر را تست کنید.
موفق باشید.
سلام، آقا این فایل رو از کجا باید دانلود کرد؟ میشه منو راهنمایی کنید؟!
سلام فایلی جهت دانلود وجود ندارد سورس قرار گرفته است بهتر است یکم حوصله به خرج دهید و مطالعه کنید !
موفق باید.
سلام.کدی که برای handle کردن است باید درکجا قرار دهیم؟
در اکتیویتی اصلی زیر متد setContenView
ببخشید . وقتی که کدهارا کپی میکنم همه عباراتgetTodayقرمزنشون میده . وgetCalendarزیرش خط قرمز داره.اگ میشه راهنمایی کنید
شما باید با دکمه های Alt + Enter کلاس ها را import کنید.
امکانش هست importهاروبدین؟؟
خیر در دسترس نیست شما با یک Alt Enter ساده می تونید import کنید چندتا بیشتر نیست.
زمانی کهAlt+Enterمیزنم اینارونمایش میده:ٍEdit intention settings و ‘Disable’Split Declaration
باید بروی اون کلاس مثلا Persian… نشان گر (Cursor) را قرار دهید بعد ALt + Enter بزنید.
چطورمیشه انداره اعدادتقویم روتغیییرداد؟؟؟
فکر نمی کنم پشتیبانی بکند.
عبارت font size رو توی attribute هاش جستجو کنید
چطورمیشه نام ماه و نام روز رو بدست اورد مثل (دوشنبه4تیر1397)؟؟؟
آموزش تاریخ شمسی در برنامه نویسی اندروید
https://programchi.ir/2018/04/27/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%aa%d8%a7%d8%b1%db%8c%d8%ae-%d8%b4%d9%85%d8%b3%db%8c-%d8%af%d8%b1-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a7%d9%86%d8%af%d8%b1%d9%88/
موفق باشید.
با سلام،چیکار کنم تا همه ی رویداد های خودش پاک شه فقط رویداد های دستی ای که من توش وارد کردم بمونه
سلام اگر منظورتون ویرایش سورسش هست که باید کتاب خانه رو دانلود و سورس کدش رو تغییر بدید.
خیلی خوبه فقط یه مشکل بزرگ داره اینکه مثل calendar view گوگل ماه و سال رو اون بالا نشون نمیده. نمیشه این مشکل رو حل کرد؟؟
سلام و درود خیر کتاب خانه باگ دارد یعنی در حالت portrait نمایش داده می شود ول در حالت اصلی خیر
سلام
من برای اضافه کردن این کتابخانه به پروژم خیلی دردسر کشیدم این روش شما روهم امتحان کردم ولی بازم همون اررو های قبل رو نشون میده چن روز بیشتر برای تحویل پروژم وقت ندارم ممنون میشم اگر میتونین کمکم کنین نسخه یاندروید استودیوم 2.1 هست فیلتر شکن هم روشنه
Error:(4) Error retrieving parent for item: No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Inverse’.
Error:(34) Error retrieving parent for item: No resource found that matches the given name ‘android:Widget.Material.Button.Colored’.
Error:(3) Error retrieving parent for item: No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Borderless.Colored’.
Error:(4) Error retrieving parent for item: No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Colored’.
Error:Execution failed for task ‘:app:processDebugResources’.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘C:\Users\arsalani\AppData\Local\Android\android-sdk\build-tools\android-6.0\aapt.exe” finished with non-zero exit value 1
سلام دوباره این اررور ها هم توقسمت Event log اضافه شده
8:39:28 PM Gradle build finished with 5 error(s) in 14s 122ms
8:41:45 PM InitializationException: getLayoutLibrary() returned null
8:42:06 PM InitializationException: getLayoutLibrary() returned null
میتونین کمکم کنین
با سلام و خسته نباشید.
ضمن تشکر از آموزش خوبتون آیا امکانش هست که اسم روز ها رو کامل نشون داد؟ مثلا به جای ش ، شنبه نشون داده بشه. ممنون میشم راهنمایی بفرمایید
سلام و درود
فکر نمی کنم همچین قابلیتی توسط توسعه دهنده لحاظ شده باشد چون خیلی طول view بزرگ می شود.
سلام.ببخشید من این کتابخونه رو که اضافه میکنم این ارور رو میده Error:Failed to resolve: recyclerview-v7
باید چکار کنم؟
سلام و درود
باید از vpn استفاده کنید تا sync بشه.
سلام وقت بخیر
ببخشید یک سوال داشتم از حضورتون
من میخوام یک تقویم که بتونه عملیات ثبت شیف کاری رو انجام بده بسازم
ولی نمیدونم چطوری میتوانم این کار را بکنم
میشه به من راهنمایی کنید؟
ممنونم از لطفتون.
سلام و درود
برای این کار لازمه سورس همین کتابخانه رو از github دریافت کنید و روش کار کنید یعنی سفارشی سازیش کنید شاید بتونید با استفاده از همین چیزی که می خواهید رو درست کنید ولی دسترسی کمتری به view ها دارید
سورس کتابخانه
https://github.com/Roojin/persian-calendar-view
موفق و پیروز باشید.
وقتی اکتیویتی اجرا میشه و setcontentview اجرا میشه برنامه متوقف می شه
علتش چی می تونه باشه؟
سلام و درود
logcat را بررسی کنید.
با سلام
آیا متد برای غیرفعال کردن تعدادی روز وجود دارد، منظور بنده این است که برای تعدادی روز خاص قابل کلیک نباشد (clickable آن روز false باشد)
با سلام و خسته نباشید خدمت دوستان و مدیریت سایت .
آبا امکان داره آموزش یا نرم افزاری برای اندروید قرار بدین که هنگام عکس گرفتن با دوربین ، تقویم شمسی روی عکس حک بشه . مثل گوشی های سونی اریکسون قدیمی ؟؟؟؟ اگه اینکارو بکنید یه دنیا ممنون میشم .
من کتابخانه رو ندیدم کجا گذاشتید
ببخشید شما اول مقاله گفتید این تقویم حجم زیادی داره
میخواستم بدونم وقتی به پروجه اضافش کنیم چقدر به حجم برنامه اضافه میشه؟
calendar.getToday به این تیکه کد خطا میگیرد
اصلا calendar را نمی شناسد .
سلام تو این قسمت کد جاوا PersianCalendarView calendarView = (PersianCalendarView) findViewById(R.id.persian_calendar);
;()PersianCalendarHandler calendarHandler = persianCalendarView.getCalendar
;()PersianDate today = calendar.getToday
;()persianCalendarView.getCalendar
;()calendar.getToday
این دو قسمت ارور داره میشه راهنمایی کنید. و در مورد رویداد ها دقیق کجا باید تعریف کنم آیا باید تو خاصیت کلیک تعریف کنم؟؟
با سلام با این کد
calendarHandler.addLocalEvent(new CalendarEvent(calendar.getToday(), “Custom event”, false));
.
ایا event اضافه شده در روز های بعد هم قابل مشاهده است
یعنی اگر 2 روز یا 3 روز پشت سر هم app را باز کنیم و استفاده کنیم رویداد روز قبل هم قابل مشاهده است یا نه؟
سلام خسته نباشید راهی برای انتخاب سال وجود دارد .؟؟
با سلام
چطور میشه از این لایبرری در محیط AndroidX استفاده کرد؟
اندروید استودیو رو اخیرا بروزرسانی کردم کتابخانه com.github.roojin:persian-calendar-view:1.2.2 رو هم ظاهرا اضافه میکنه ولی کلاسهای این کتابخانه رو به هیچ وجه دسترسی نمیده.
maven { url “https://jitpack.io” } رو هم فقط یه قسمت در گریدل repositories داشت به اونجا اضافه کردم و مثل سابق بخش زیر رو نداریم :
allprojects {
repositories {