إضافة شريط الحالة في كوردوفا

من موسوعة حسوب

يوفر الكائن StatusBar بعض الدوال التي يمكن استخدامها لتخصيص شريط الحالة في منصتي iOS و أندرويد.

التثبيت

تتطلب هذه الطريقة في التثبيت الإصدار 5.0 من كوروفا وما بعده:

cordova plugin add cordova-plugin-statusbar‎

لا يزال بالإمكان تثبيت هذه الإضافة على الإصدارات القديمة من كوردوفا عبر المُعرِّف المُهمل التالي:

cordova plugin add org.apache.cordova.statusbar‎

من الممكن أيضًا تثبيت هذه الإضافة عبر مستودع git مباشرة (إلا أنه غير مستقر):

cordova plugin add https://github.com/apache/cordova-plugin-statusbar.git‎

تفضيلات

الملف Config.xml

  • StatusBarOverlaysWebView: (قيمة منطقية؛ القيمة الافتراضية هي true) في منصة iOS، هذا الخيار يجعل شريط الحالة يركب (overlay) على العارض أو العكس عند بدء التشغيل.
<preference name="StatusBarOverlaysWebView" value="true" />
  • StatusBarBackgroundColor: (سلسلة نصية تمثل لونًا ست عشريًا [color hex]؛ لا توجد قيمة افتراضية). في منصة iOS، يضبط هذا الخيار لون خلفية شريط الحالة، إذ يعطيها اللون المُتضمّن في السلسلة النصية الست عشرية (مثل ‎#RRGGBB) عند بدء التشغيل. إذا لم يتم تعيين هذه القيمة، فسيكون لون الخلفية شفافًا.
<preference name="StatusBarBackgroundColor" value="#000000" />
  • StatusBarStyle: (نمط شريط الحالة؛ القيمة الافتراضية هي lightcontent). في منصة iOS 7، يعيّن هذا الخيار نمط شريط الحالة. الخيارات الافتراضية المتاحة هي: lightcontent و blacktranslucent و blackopaque.
<preference name="StatusBarStyle" value="lightcontent" />
  • StatusBarDefaultScrollToTop: (قيمة منطقية؛ القيمة الافتراضية تساوي false). في نظام التشغيل iOS، يتيح هذا الخيار لعارض كوروفا استخدام السلوك الافتراضي في التمرير إلى الأعلى (scroll-to-top). القيمة الافتراضية هي false، ما يعني أنّه يمكنك الاستماع إلى الحدث "statusTap" (الموضح أدناه) وتخصيص السلوك.
<preference name="StatusBarDefaultScrollToTop" value="false" />

ملاحظات خاصة بمنصة أندرويد

توصي إرشادات منصة أندرويد من الإصدار 5 وما بعده، بأن يكون لون شريط الحالة مختلفًا عن لون التطبيق الرئيسي (بخلاف لون شريط الحالة المُوحّد في العديد من تطبيقات iOS 7‎)، لذلك قد ترغب في تعيين لون شريط الحالة في وقت التشغيل عبر التابعين StatusBar.backgroundColorByHexString و StatusBar.backgroundColorByName. فيما يلي إحدى الطرق الممكنة للقيام بذلك:

if (cordova.platformId == 'android') {
    StatusBar.backgroundColorByHexString("#333");
}

من الممكن أيضًا جعل شريط الحالة شبه شفاف. يستخدم Android قيما لونية ست عشرية من النوع ARGB، والتي تُنسّق على هيئة ‎#AARRGGBB. يمثل الزوج الأول من الأحرف AA قناة ألفا (alpha channel). يجب عليك تحويل قيم العتامة (opacity) العشرية إلى قيمة ست عشرية. يمكنك قراءة المزيد من هنا. هذا مثال على شريط حالة أسود مع عتامة 20%:

if (cordova.platformId == 'android') {
    StatusBar.overlaysWebView(true);
    StatusBar.backgroundColorByHexString('#33000000');
}

إخفاء شريط الحالة عند بدء التشغيل

خلال وقت التشغيل، يمكنك استخدام الدالة StatusBar.hide أدناه، ولكن إذا كنت تريد إخفاء شريط الحالة عند بدء تشغيل التطبيق، فعليك تعديل الملف Info.plist الخاص بتطبيقك.

أضف أو عدّل هاتين الخاصيتين إذا لم تكونا موجودتين. عيّن "Status bar is initially hidden" إلى القيمة "YES" وعّين "View controller-based status bar appearance" إلى القيمة "NO". إذا عدّلتها يدويًا من دون استخدام بيئة العمل Xcode، فستكون المفاتيح والقيم كما يلي:

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

StatusBar

تعرِّف هذه الإضافة كائنًا عامًّا هو StatusBar. على الرغم من أنّ هذا الكائن موجود في النطاق العام (global scope)، إلا أنه لن يكون متوفرًا إلا بعد إطلاق الحدث deviceready.

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    console.log(StatusBar);
}

التوابع التي يمكن استعمالها مع هذا الكائن هي:

  • StatusBar.overlaysWebView
  • StatusBar.styleDefault
  • StatusBar.styleLightContent
  • StatusBar.styleBlackTranslucent
  • StatusBar.styleBlackOpaque
  • StatusBar.backgroundColorByName
  • StatusBar.backgroundColorByHexString
  • StatusBar.hide
  • StatusBar.show

الخاصيات التي يمكن استعمالها مع هذا الكائن هي:

  • StatusBar.isVisible

الأحداث التي يمكن استعمالها مع هذا الكائن هي:

  • statusTap

StatusBar.overlaysWebView

يجعل هذا التابعُ شريطَ الحالة إما يركب (overlay) على العارض، أو العكس.

StatusBar.overlaysWebView(true);

اضبط هذا الخيار إلى القيمة true ليعتلي شريط الحالة التطبيق. تأكد من ضبط التنسيق بصورة مناسبة حتى لا يُخفى عنوان التطبيق أو المحتوى. اضبط هذا الخيار إلى القيمة false لجعل شريط الحالة غير شفاف ولكي لا يعتلي تطبيقك. قم بتعيين نمط ولون الخلفية بالشكل الذي تراه مناسبًا باستخدام الدوال الأخرى.

المنصات المدعومة هي:

إليك المثال السريع التالي:

StatusBar.overlaysWebView(true);
StatusBar.overlaysWebView(false);

StatusBar.styleDefault

استعمل هذا التابع لاستخدام شريط الحالة الافتراضي (نص غامق على خلفية فاتحة).

StatusBar.styleDefault();

المنصات المدعومة هي:

  • iOS
  • أندرويد 6 وما بعده
  • Windows Phone 7
  • Windows Phone 8
  • Windows Phone 8.1

StatusBar.styleLightContent

استعمل هذا التابع لأجل استخدام شريط الحالةlightContent (نص فاتح على خلفية داكنة):

StatusBar.styleLightContent();

المنصات المدعومة هي:

  • iOS
  • أندرويد 6 وما بعده
  • Windows Phone 7
  • Windows Phone 8
  • Windows Phone 8.1

StatusBar.styleBlackTranslucent

استدع هذا التابع لاستخدام شريط الحالة من النوع blackTranslucent (نص فاتح، على خلفية داكنة).

StatusBar.styleBlackTranslucent();

المنصات المدعومة هي:

  • iOS
  • أندرويد 6 وما بعده
  • Windows Phone 7
  • Windows Phone 8
  • Windows Phone 8.1

StatusBar.styleBlackOpaque

استدع هذا التابع لاستخدام شريط الحالة من النوع blackOpaque (نص فاتح على خلفيات داكنة).

StatusBar.styleBlackOpaque();

المنصات المدعومة هي:

  • iOS
  • أندرويد 6 وما بعده
  • Windows Phone 7
  • Windows Phone 8
  • Windows Phone 8.1

StatusBar.backgroundColorByName

في منصة iOS 7، عند ضبط الخاصية StatusBar.statusBarOverlaysWebView إلى القيمة false، يمكنك تعيين لون خلفية شريط الحالة باسم أي لون تريده.

StatusBar.backgroundColorByName("red");

أسماء الألوان المدعومة هي:

black, darkGray, lightGray, white, gray, red, green, blue, cyan, yellow, magenta, orange, purple, brown

المنصات المدعومة هي:

  • iOS
  • أندرويد الإصدار 5 وما بعده
  • Windows Phone 7
  • Windows Phone 8
  • Windows Phone 8.1

StatusBar.backgroundColorByHexString

يعيّن هذا التابع لون خلفية شريط الحالة عبر إعطائه سلسلة نصية تحتوي لونًا ست عشريًا (hex).

StatusBar.backgroundColorByHexString("#C0C0C0");

اختصارات ألوان CSS مدعومةٌ أيضًا.

StatusBar.backgroundColorByHexString("#333"); // => #333333
StatusBar.backgroundColorByHexString("#FAB"); // => #FFAABB‎

في منصة iOS، عند ضبط الخاصية StatusBar.statusBarOverlaysWebView إلى القيمة false، فيمكنك تعيين لون خلفية شريط الحالة عبر سلسلة نصية ست عشرية (‎#RRGGBB).

في منصة أندرويد، عند ضبط الخاصية StatusBar.overlaysWebView إلى القيمة true، وكذلك في منصتي WP7 و WP8، يمكنك أيضًا تحديد قيم مثل ‎#AARRGGBB، إذ تمثل AA قيمة الشفافية ألفا (alpha value).

المنصات المدعومة هي:

  • iOS
  • أندرويد 5 ومابعده
  • Windows Phone 7
  • Windows Phone 8
  • Windows Phone 8.1

StatusBar.hide

يخفي هذا التابع شريط الحالة.

StatusBar.hide();

المنصات المدعومة هي:

  • iOS
  • أندرويد
  • Windows Phone 7
  • Windows Phone 8
  • Windows Phone 8.1

StatusBar.show

يعرض هذا التابع شريط الحالة.

StatusBar.show();

المنصات المدعومة هي:

  • iOS
  • أندرويد
  • Windows Phone 7
  • Windows Phone 8
  • Windows Phone 8.1

StatusBar.isVisible

استعمل هذه الخاصية لمعرفة ما إذا كان شريط الحالة مرئيًا أم لا.

if (StatusBar.isVisible) {
    // افعل شيئًا ما
}

المنصات المدعومة هي:

  • iOS
  • أندرويد
  • Windows Phone 7
  • Windows Phone 8
  • Windows Phone 8.1

statusTap

أنصِت لهذا الحدث لمعرفة ما إذا تم النقر على شريط الحالة أم لا.

window.addEventListener('statusTap', function() {
    // أو افعل ما تريد ،document.body.scrollTop = 0 مرّر إلى أعلى عبر
});

المنصات المدعومة هي:

  • iOS

انظر أيضًا

مصادر