خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
SHOW FULL COLUMNS FROM `wp_options`

خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category', 'post_tag', 'post_format', 'hashtags') AND tr.object_id IN (2516) ORDER BY t.name ASC

معرفی MaterialDrawer با پشتیبانی از راست به چپ در اندروید - Hive | مجله توسعه‌دهندگان وب
  • شاخه: دسته‌بندی نشده    ::    بازدید: ۴۱۸۰
  • ۴۰

معرفی MaterialDrawer با پشتیبانی از راست به چپ در اندروید

برنامه‌هایی که از Drawer استفاده می‌کنند زیاد هستن و اکثرا این منوی پرکاربرد رو در سمت چپ برنامه قرار دادن (برنامه‌های فارسی البته) که از چپ به راست باز می‌شه. مدتی قبل به دنبال یک کتابخونه خوب با پشتیبانی از RTL می‌گشتم که اتفاقی این کتابخونه رو پیدا کردم.

چندتا از ویژگی‌هاش رو میگم:

  • به‌راحتی با هر پروژه‌ای که دارید در مدت زمان خیلی کم integrate میشه.
  • از اندروید ورژن 10 به بالا پشتیبانی می‌کنه.
  • امکان معرفی چندین پروفایل کاربری مثل برنامه جیمیل رو داره.
  • و از همه مهمتر اینکه به راحتی راست به چپ یا اصطلاحا RTL میشه.

مراحل کار و سورس برنامه رو در Github به همراه تمامی commit‌هایی که انجام شده قرار دادم. هر گونه pull request در جهت بهبود برنامه پذیرفته می‌شود 🙂

قبل از هر چیز با استفاده از Android Studio یک پروژه جدید با یک activity از نوع empty ایجاد می‌کنیم:

Empty Activity

وقتی که پروژه ایجاد شد و کار gradle تموم شد، برنامه رو اجرا کنید تا خروجی برنامه رو ببینید:

Hello World

ابتدا خطوط زیر رو به gradle.build برنامه اضافه می‌کنیم:

منتظر باشید تا کار sync کتابخونه‌ها تموم بشه.
بعدش به کلاس MainActivity دو متغییر زیر رو اضافه می‌کنیم:

اولین متغییر برای تعریف حساب کاربری و هدر Drawer و دومی هم برای تعریف لیست منو مورد استفاده قرار می‌گیره. در ادامه مقدار دهی و تنظیمات هر کدوم توضیح داده میشه.
برای استفاده از قالب‌های ارائه‌شده توسط این کتابخانه فایل activity_main.xml رو به صورت زیر ویرایش کنید:

با این تغییر می‌توان به toolbar برنامه دسترسی پیدا کرد و مقادیرش رو به دلخواه تغییر داد. نکته دیگه مربوط به styleهای استفاده شده هست، این استایل‌ها در فایل styles.xml به صورت زیر تعریف شده‌اند:

هدف از این تغییرات استفاده از برنامه به صورت تمام‌صفحه هست که در تنظیمات المان CoordinatorLayout به صورت android:fitsSystemWindows=”true” مشخص شده.
سپس به MainActivity کد زیر رو برای دسترسی به toolbar اضافه می‌کنیم:

برای اعمال استایل کتابخونه به فایل AndroidManifest.xml خط زیر را در بخش MainActivity اضافه می‌کنیم:

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

سپس کدهای زیر رو اضافه می‌کنیم:

دقت کنید که با تغییر Gravity.END منو از سمت راست باز میشه با تغییر این مقدار به Gravity.START منو از سمت چپ باز خواهد شد.

تقریبا برنامه‌مون آماده‌ست، برنامه رو اجرا می‌کنیم و خروجی برنامه به صورت زیر هست:

MaterialDrawer

Main Activity

اگه دقت کنید متن toolbar به سمت راست نیومده و هنوز سمت چپ هست برای جابجا کردنش به سمت راست، من خودم یه ایده دادم شاید روش بهتر و ساده‌تری وجود داشته باشه، اگه هست توی کامنت بهم بگید، ممنون میشم.
من از menu استفاده کردم، ابتدا فایل menu_main.xml رو ایجاد می‌کنیم و کد زیر رو داخلش وارد می‌کنیم:

با این کار یک عکس و یک متن به ActionBar اضافه میشه. از عکس برای باز کردن Drawer و از متن برای نمایش عنوان برنامه استفاده می‌کنیم. دقت کنید که باید عنوان اصلی toolbar رو هم به صورت خالی در نظر بگیریم:

برنامه رو اجرا می‌کنیم، خروجی برنامه به صورت زیر هست:
ّFinal ActionBar

حتما به لینک اصلی کتابخونه مراجعه کنید، توضیحات خیلی بیشتری ارائه شده، همچنین اگه به بخش issue مراجعه کنید متوجه خواهید شد که ارائه‌دهنده این کتابخونه هیچ سوالی رو بی‌جواب نگذاشته.

 

بهروز خضری

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

همچنین ممکن است دوست داشته باشید ...

خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (412) ORDER BY t.name ASC

خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (412) ORDER BY t.name ASC

خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('hashtags') AND tr.object_id IN (412) ORDER BY t.name ASC

class="post-412 post type-post status-publish format-standard has-post-thumbnail hentry">
۲
  • خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_format') AND tr.object_id IN (1851) ORDER BY t.name ASC

  • خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (1851) ORDER BY t.name ASC

    خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (1851) ORDER BY t.name ASC

    خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('hashtags') AND tr.object_id IN (1851) ORDER BY t.name ASC

    class="post-1851 post type-post status-publish format-standard has-post-thumbnail hentry">
    ۳
  • خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_format') AND tr.object_id IN (2364) ORDER BY t.name ASC

  • خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (2364) ORDER BY t.name ASC

    خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (2364) ORDER BY t.name ASC

    خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('hashtags') AND tr.object_id IN (2364) ORDER BY t.name ASC

    class="post-2364 post type-post status-publish format-standard has-post-thumbnail hentry">
    ۷

    ۴۰ واکنش

    1. مهدی گفت:

      ببخشید ولی DrawerLayout که توی ساپورت لایبرری ۴ گنجانده شده و به راحتی راست به چپ میشه دیگه نیازی به استفاده از لایبرری های دیگه نیست.

      • بهروز خضری گفت:

        بله حرف شما درسته.
        این کتابخانه چیزی بیشتر از راست به چپ کردن داره والا چهار هزار ستاره نمی‌گرفت.
        مثل این می‌مونه بگیم که وقتی جاوا اسکریپت همه چیز داره، چه نیازی به جی کوئری هست.

    2. محمد گفت:

      بسیار عالی و کاربردی مثله همیشه Top 🙂

    3. خیلی جالبه مطالب شما همش تخصصی هستند و کسی جز برنامه نویسان متوجه نمیشوند. این خیلی روند خوبیه و امیدوارم همه وبلاگ های ایران تخصصی بشوند.

    4. majid گفت:

      فوق العاده بووووووود:-*

    5. I.M.A.N گفت:

      سلام دوستان
      من برای ساخت منوی کشویی از این روش استفاده کردم . روش بسیار راحت و ساده ای است اما برای تغییر سایز و رنگ دادن به آیکون ها ( در حالت پیش فرض آیکون ها خاکستری نمایش داده می شوند حتی اگر رنگی باشند) با مشکل مواجه شدم که البته با سرچ زیاد حل شد.

      مشکل الان اینجاست که چطور فونت های استفاده شده را به فونت دلخواه تغییر دهم؟؟؟؟؟

    6. I.M.A.N گفت:

      سلام. ممنون از راهنمایی تون . ولی من همون مرحله ی اول گیر کردم. موقع اضافه کردن کتابخونه به اندروید استودیو با خطا مواجه میشم. شاید باید وی پی ان استفاده کنم؟ درسته؟

    7. I.M.A.N گفت:

      ممنون بهروز جان

    8. I.M.A.N گفت:

      سلام . میخواستم بدونم چطور میشه عناصر روی دراورو به این روش روی کل دراور ست کرد؟ مثلا من پنج تا گزینه داره لیستم و توی گوشی ۴٫۷ اینچ تا پایین منو پر میشه ولی روی گوشی ۵ اینچ فضای پایین خالی می مونه که اصلا جالب نیست. ممنون میشم راهنمایی کنین

      • بهروز خضری گفت:

        در این مورد ایده‌ای ندارم
        توو بخش issue کتابخانه هم گشتم و چیزی پیدا نکردم.
        به فرض اندازه در ۵ اینچ کاملا fit بشه
        برای سایزهای کوچکتر یعنی همین ۴٫۷ باید اسکرول کنید تا همه آیتم‌ها رو ببینید
        به نظرم کلا روش درستی نیست این کار.

    9. کویرسبز گفت:

      سلام ممنونم بابت آموزش خوبتون
      ی خواهشی داشتم می خوام از datepiker بصورت فارسی ( شمسی) که امکان انتخاب تاریخ توسط کاربر رو داشته باشه توی برنامه استفاده کنم ی کتابخونه پیدا کردم اما هر کاری می کنم خطا میده امکانش هست مثل کاری برای منو انجام از این کتابخونه یاستفاده کنید و ی آموزشی بدید ؟
      خیلی ممنون میشم https://github.com/alirezaafkar/SunDatePicker

    10. کویر سبز گفت:

      سلام امکانش هست ی مثال عملی بزنید من هر کاری می کنم با مشکل برخورد می کنم ؟؟؟؟
      ممنون میشم

    11. ستار گفت:

      سلام و خسته نباشید به جناب خضری
      بنده نمونه رو از گیتهاب گرفتم و اجرا کردم چند مورد :
      اگر زبان گوشی انگلیسی باشه برنامه درست کار میکنه ولی اگر زبان گوشی فارسی باشه جواب نمیده!!
      یعنی خود اندروید طبق زبان گوشی تغییر اعمال میکنه!
      که نمونه دراوری که خود اندروید استودیو گذاشته تو زبان فارسی راست به چپ و انگلیسی چپ به راست میاره !
      چطور میشه در دو حالت (زبان گوشی هر زبانی که باشه ) راست به چپ بیاره ؟؟؟؟

      • بهروز خضری گفت:

        سلام،
        من تا الان روی گوشی با زبان فارسی تست نکردم. دو پیشنهاد دارم
        اول اینکه locale برنامه رو در برنامه‌نویسی تغییر بدید
        http://stackoverflow.com/questions/2900023/change-language-programatically-in-android

        دوم اینکه در بخش issue این کتابخانه گفته شده که برای راست به چپ بودن، باید در Android manifest گزینه rtl رو اضافه کنید که به حداقل نسخه اندروید ۱۴ نیاز داره. بگردید در اون بخش پیداش می‌کنید، اگه مشکل رو حل کردن، همینجا اطلاع بدید.
        ممنون.

    12. ستار گفت:

      خیلی ممنونم بابت راهنمایتون
      با روش اول جواب گرفتم ، منتهی :
      زبان رو نباید رو فارسی گذاشت؛
      من زبان رو به انگلیسی ست کردم درست شد!
      ———————————————-
      احتمالا کتابخانه فقط در حالت انگیسی بودن دیوایس راست به چپ میکنه!
      حل شد ولی نمیدونم اصولیه یا نه!
      لطفا اگه اصولی نیست – راه های دیگه ای هست مطرح کنید ممنون میشم.
      چون کانفیگ کردن به انگلیسی اپ نمیدونم شاید در آینده مشکل ساز بشه!
      شایدم نشه!
      ولی باز بهتره از اصولی بودن کار خیالمون راحت بشه خوبه!

      • بهروز خضری گفت:

        بر روی گوشی اس سه سامسونگ که فارسی بود تستش کردم،
        در هر دو حالت فارسی و انگلیسی از سمت راست باز شد. شاید برای اون دستگاه خاص مشکل داره، پیشنهاد می‌کنم روش دوم رو هم امتحان کنید

    13. ستار گفت:

      خیلی ممنون گوشی من هواوی y511 – anroid 4.2.2 – احتمالا همینطوریه که شما میفرمایید!
      نمونه دوم رو رفتم تو پیج گیتهابش – نتونستم چیزی در این مورد پیدا کنم.
      اگه بیشتر راهنمایی کنین ممنون میشم!

    14. ستار گفت:

      جناب خضری ممنون برای پاسخ هاتون
      زیاد وقتتون رو گرفتم – همون روش اول رو اجرا میکنم
      ————
      خیلی لطف کردین !
      آموزشهاتون و نکاتتون حرف ندارن!
      ———–

    15. سامان گفت:

      چطوری میشه nav drawer زیر Toolbar باز بشه ؟

    16. محمد گفت:

      سلام و خسته نباشید
      دو تا سوال دارم اول اینکه ایتم های درون drawer رو چه جوری میشه راست چین کرد و دوم اینکه چه جوری رنگ drawer رو مانند مثال هاش میشه تیره کرد

    17. سلام ، ممنونم بابت انتنشار این پست و معرفی این کتابخانه . از گیتهاب گرفتمش و دارم راست به چپش رو بررسی می کنم . باز هم تشکر از شما

    18. dehghan گفت:

      با سلام، من وقتی که خطوط مربوط به کتابخانه mikepenz:materialdrawer را در قسمت gradle.bulid اضافه میکنم بعد از sync شدن برای هر سه کتابخانه با این خطا روبرو میشم
      Failed to resolve: com.mikepenz:materialdrawer:4.5.8
      چطور میتونم این مشکل را حل کنم و کتابخانه را به پروژه اضافه کنم

    19. امید گفت:

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

    20. رضا بنایی گفت:

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

    21. سید محمد رضا گفت:

      سلام من این کتابخانه رو تونستم پیاده سازی کنم اما چرا نمیشه تو لایوت main.xml تغییرات رو به خوبی انجام داد و تازه اگر هم مثلا یه باتن در بالاترین سطح قرار بدیم میره زیر Toolbar

    22. اسماعیل گفت:

      واقعا ممنونم.عالی بود.

    23. علی زنده دل گفت:

      سلام.
      برای حالت Em,bedded که منو زیر toolbar باز بشه چکار باید بکنم؟
      میخوام زیر تولبار باشه و drawertoggle هم موقعی که منو باز میشه به صورت فلش در بیاد

    پاسخ دهید

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