راست به چپ کردن اکشن بار در اندروید

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

راه‌های مختلفی برای راست به چپ کردن اکشن بار وجود داره، از جمله استفاده از custom layout برای اکشن بار. اما یکی دیگه از روش‌هایی که در این مطلب می‌خوام بهش بپردازم، استفاده از ActionBar RTLizer هست.

برای شروع فایل build.gradle رو باز کنید و به قسمت dependencies کد زیر رو اضافه کنید: (یا می‌تونید از روش‌های دیگه این کتابخانه رو به پروژه اضافه کنید)

    compile 'info.semsamot:actionbar-rtlizer:2.+@aar'

بعد از اینکه این کد رو اضافه کردید اندروید استودیو پیغام میده که تغییرات تو فایل ایجاد شده و باید یکبار sync بشه که بعد از اینکار این کتابخانه به پروژه شما افزوده می‌شه.

حالا به اکتیویتی که میخواید راست به چپ بشه برید و در قسمت onCreateOptionsMenu کدهای زیر رو اضافه کنید. توجه کنید که این کدها باید قبل از return اضافه بشن.

ActionBarRtlizer rtlizer = new ActionBarRtlizer(this);
ViewGroup homeView = (ViewGroup) rtlizer.getHomeView();

RtlizeEverything.rtlize(rtlizer.getActionBarView());

if (rtlizer.getHomeViewContainer() instanceof ViewGroup) {
    RtlizeEverything.rtlize((ViewGroup) rtlizer.getHomeViewContainer());
}

RtlizeEverything.rtlize(homeView);
rtlizer.flipActionBarUpIconIfAvailable(homeView);

بعد از اضافه کردن کدها بعضی از قسمت‌ها به رنگ قرمز در میان، این یعنی اینکه باید کلاس مربوط بهش import بشه. روی هرقسمتی که به رنگ قرمز دراومده Alt+enter بزنید و Import Class کنید.

حالا یکبار اپ رو اجرا میکنیم تا تغییرات را ببینیم.

همونطوری که بالاتر گفتم، برای انجام اینکار روش‌های دیگه‌ای هم هست، ولی این روش ساده‌ترین روشی هست که با کمترین کدزدن میشه انجام داد. نکته‌ای که هست اینکه این کتابخانه از api ۷ به بالا رو ساپورت میکنه. خودم روی api 14 تست کردم و مشکلی نداشت.

موفق باشید


منتشر شده

در

,

توسط

برچسب‌ها:

دیدگاه‌ها

17 پاسخ به “راست به چپ کردن اکشن بار در اندروید”

  1. حسین نیم‌رخ
    حسین

    سلام. ممنون از این آموزش عالی
    فقط یه سوال. در صورتی که به جای اندروید استدیو، از اکلیپس استفاده کنیم، چطور باید کدهای dependencies رو اضافه کنیم؟ آیا روش اکلیپس هم فایلی مشابه build.gradle داره؟
    ممنون

    1. علیرضا رضوی نیم‌رخ
      علیرضا رضوی

      برای استفاده در اکیلیپس یا IntelliJ میتونید فایل ActionBarRTLizer رو از این لینک دانلود کنید و به پروژه اضافه کنید.

  2. امیراحسان نیم‌رخ
    امیراحسان

    سلام
    دوست عزیز من از این کتابخانه استفاده میکنم ولی یه ارور میده و اصلا راهی براش پیدا نکردم
    اونم اینه که تا برنامه شروع میشه میندازه بیرون از برنامه

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

    1. علیرضا رضوی نیم‌رخ
      علیرضا رضوی

      سلام. باید پیغام خطایی که میده بررسی بشه و لاگ هم مشاهده بشه. همینطوری نمیشه گفت مشکل چیه.
      ولی در کل توصیه می‌کنم که از Toolbar استفاده کنید. اکشن‌بار دیگه ساپورت نمیشه. در آینده آموزش استفاده از تولبار رو می‌نویسم

  3. رها نیم‌رخ
    رها

    سلام، خیلی ممنون، خیلی مفید بود، فقط یه سوال داشتم:
    وقتی activity شروع میشه، ation bar اول چپ چین نمایش داده میشه، بعد از مدت خیلی کوتاهی راست چین میشه. میشه کاری کرد که از همون اول راست چین بشه؟ فکر می‌کنم فراخوانی متد onCreate و اجرای دستور setContentView تو این متد، باعث این مشکل میشه!

    ممنون

  4. رها نیم‌رخ
    رها

    حل شد، ممنون. اینجا نوشته باید چه کار کنیم که مشکل بالا پیش نیاد:
    http://stackoverflow.com/questions/8500283/how-to-hide-action-bar-before-activity-is-created-and-then-show-it-again?rq=1

    1. شاهین نیم‌رخ
      شاهین

      من اون کارو انجام دادم همش فورز کلوزد میداد!
      دقیقا شما چیکار کردید؟؟

  5. عرفان نیم‌رخ
    عرفان

    آقا دمت گرم خیلی حال دادی

  6. علی نیم‌رخ
    علی

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

    1. محمد نیم‌رخ
      محمد

      سلام،
      برای راست چین کردن تولبار اینجا رو ببینید:
      https://github.com/semsamot/ActionBarRTLizer/issues/9

      __
      آقای رضوی ممنونم از شما بخاطر آموزش بسیار عالی و کاملی که ارائه دادین.

  7. شاهین نیم‌رخ
    شاهین

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

    1. علیرضا رضوی نیم‌رخ
      علیرضا رضوی

      تو مطلب توضیح دادم که چطور کتابخانه‌رو به پروژه اضافه کنید.

      1. شاهین نیم‌رخ
        شاهین

        کتاب خونه ی موجود نیست اضافه کنم که!
        فقط کلاس هارو اد کردم بدون
        compile ‘info.semsamot:actionbar-rtlizer:2.+@aar’
        کار کردم حل شد چون کتاب خونه ای نبود من ادش کنم بعد این کامپایل رو بزنم!
        در هر صورت مشکلم حل شد

  8. شاهین نیم‌رخ
    شاهین

    دکمه ها ی فلش (بک) اونا رو چه جوری برگردونیم؟

    1. شاهین نیم‌رخ
      شاهین

      راه حل پیدا کردم
      چند راه که میتونید انجام بدید
      اگر تولبار نداشته باشید
      ActionBar actionbar = getSupportActionBar ();
      actionbar.setDisplayHomeAsUpEnabled ( true );
      actionbar.setHomeAsUpIndicator ( R.drawable.ic_action_back );
      اگر داشته باشید
      toolbar.setNavigationIcon(R.drawable.ic_action_back);
      یا
      @drawable/ic_back_arrow

  9. erfan نیم‌رخ
    erfan

    دمت گرم داداش

پاسخ دادن به علیرضا رضوی لغو پاسخ

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

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