التنبيهات التالية ظهرت :
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 864 errorHandler->error



تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
LogIn App: AppCompat #8
#1
بسم الله الرحمن الرحيم
(رب اشرح لي صدري ويسر لي امري واحلل عقدة من لساني يفقهوا قولي)



السلام عليكم ورحمة الله وبركاته


باذن الله سنتحدث في هذا الدرس عن دعم الاصدارات القديمة بالنسبة لـMaterial Theme عن طريق استخدام AppCompat.


AppCompat: مكتبة من Google لدعم الاصدارات الاقدم من اصدارات Android  حيث تقوم شركة Google باضافة ميزات في الاصدرات الحديثة ولذلك عند استخدامك لمكتة AppCompat ستتمكن من استخدام هذه الميزات لتدعم الاصدارات القديمة ايضا ( أقل من API 21 ).


كما ذكرنا في درس سابق (Material Theme) عن كيفية استخدام Material Design في تطبيق الاندرويد و وضحنا بأنه يدعم الاصدارات الاحدث بدءاً من اصدار Android Lollipop API 21 الى الاصدارات الحديثة وآخرها Android Oreo.


الخطوة الاولى:

طيب لدعم الاصدارات الأقدم من Android Lollipop نحتاج الى اضافة مكتبة AppComapt من NuGet Package بالشكل التالي:

Solution Explorer-->TestAndroidApp-->RightClick--> Manage NuGet Packages-->Browse

ثم اكتب في خانة البحث: Xamarin.Android.Support.v7.AppCompat

وقم باضافتها الى المشروع.


الخطوة الثانية:


افتح ملف Styles من مجلد values وقم باستبدال الكود السابق الموجود بالكود أدناه وأكتشف الفرق بنفسك:
PHP كود :
<?xml version="1.0" encoding="utf-8" ?>
<resources>
  <!-- Inherit from the light Material Theme
<!-- Inherit from the light Material Theme -->
  <style name="MyCustomTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!--If you are using revision 22.1 please use just windowNoTitle. Without android:-->
    <item name="windowNoTitle">true</item>
    <!--We will be using the toolbar so no need to show ActionBar-->
    <item name="windowActionBar">false</item>
    <!-- Customizations go here -->
    <!-- Override the status bar color -->
    <item name="colorPrimaryDark">#FF006885</item>
    <!-- Override the app bar color -->
    <item name="colorPrimary">#FF176F87</item>
    <!-- Override the color of UI controls -->
    <item name="colorAccent">#FF176F87</item>
< item name="android:textColor">#FAFAFA</item>
  </style>
</resources> 

ولا تنسى أن تغير Minimum Android version الى Android 4.2 API Level 17.


الان انتقل الى Main.axml وقم بتطبيق الخطوات التالية:

قم باضافة هذا السطر داخل LinearLayout:

PHP كود :
xmlns:app="http://schemas.android.com/apk/res-auto" 

ثم قم باضافة Toolbar  بعد LinearLayout مباشرة :
PHP كود :
<android.support.v7.widget.Toolbar
        android
:id="@+id/mainToolbar"
 
       android:layout_width="match_parent"
 
       android:layout_height="wrap_content"
 
       android:minHeight="?attr/actionBarSize"
 
       android:background="?attr/colorPrimary"
 
       android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

الخطوة الثالثة: انتقل الى MainActivity.cs وقم بتطبيق الخطوات التالي:

استبدل Activity في هذا السطر :
PHP كود :
public class MainActivity Activity 
بــ AppCompatActivity بهذا الشكل: (استخدم هذه المكتبة using Android.Support.V7.App;

)
PHP كود :
public class MainActivity AppCompatActivity 



قم بتعريف متغير بهذا الشكل:
PHP كود :
V7Toolbar _mainToolbar


ولإظهار الألوان في الـstatus bar والـ navigation bar نستخدم الكود التالي  قبل سطر الـ SetContentView:

PHP كود :
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
 
           {
 
               Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
 
               Window.SetNavigationBarColor(Color.ParseColor("#FF006885"));
 
           

حيث ستكون  الدالة OnCreate في MainActivity.cs كالتالي:
PHP كود :
protected override void OnCreate(Bundle savedInstanceState)
 
       {
 
           base.OnCreate(savedInstanceState);
if (
Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
            {
                Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
                Window.SetNavigationBarColor(Color.ParseColor("#FF006885"));
            }
 
           // Set our view from the "main" layout resource
 
           SetContentView(Resource.Layout.Main);
 
           //

 
           _username FindViewById<EditText>(Resource.Id.userName);
 
           _password FindViewById<EditText>(Resource.Id.password);
 
           _mainToolbar FindViewById<V7Toolbar>(Resource.Id.mainToolbar);

 
           SetSupportActionBar(_mainToolbar);
 
           SupportActionBar.Title "AppCompat";

 
           _ok FindViewById<Button>(Resource.Id.okButton);
 
           _cancel FindViewById<Button>(Resource.Id.cancelButton);

 
           _ok.Click += _ok_Click;

 
           _cancel.Click += delegate
              
{
 
                 Finish();
 
             };
 
       


والمكتبات المستخدمة ستكون كالتالي:
PHP كود :
using Android.App;
using Android.Widget;
using Android.OS;
using Android.Content;
using Android.Views;
using Android.Support.V7.App;
using V7Toolbar Android.Support.V7.Widget.Toolbar;
using Android.Graphics

وعند تنفيذ التطبيق ستكون الواجهة بهذا الشكل:


والحمد لله رب العالمين
الرد }}}
تم الشكر بواسطة: sendbad100 , Amir_Alzubidy , الشاكي لله


الردود في هذا الموضوع
LogIn App: AppCompat #8 - بواسطة Sajad - 01-01-18, 09:32 PM
RE: LogIn App: AppCompat #8 - بواسطة حريف برمجة - 01-01-18, 11:37 PM
RE: LogIn App: AppCompat #8 - بواسطة Sajad - 02-01-18, 08:58 PM
RE: LogIn App: AppCompat #8 - بواسطة حريف برمجة - 02-01-18, 09:51 PM
RE: LogIn App: AppCompat #8 - بواسطة Sajad - 03-01-18, 10:51 PM
RE: LogIn App: AppCompat #8 - بواسطة حريف برمجة - 04-01-18, 12:38 AM
RE: LogIn App: AppCompat #8 - بواسطة Sajad - 04-01-18, 10:01 PM
RE: LogIn App: AppCompat #8 - بواسطة حريف برمجة - 04-01-18, 10:35 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  LogIn App: Archiving#9 Sajad 1 3,360 10-04-21, 03:18 AM
آخر رد: ba2e44ca9a
  LogIn App: zip align & uploding on Goolge Store #10 Sajad 5 4,277 16-01-18, 01:14 PM
آخر رد: حريف برمجة
  LogIn App: Tips #7 Sajad 1 2,431 30-12-17, 08:38 PM
آخر رد: حريف برمجة
  LogIn App: Styling Button #6 Sajad 2 2,594 19-12-17, 07:48 PM
آخر رد: Amir_Alzubidy
  LogIn App: Intents #5 Sajad 2 2,312 16-12-17, 03:23 AM
آخر رد: حريف برمجة
  LogIn App #2 Sajad 3 2,569 13-12-17, 02:54 PM
آخر رد: Amir_Alzubidy
  LogIn App LinearLayout #1 Sajad 2 2,073 11-12-17, 01:45 AM
آخر رد: sendbad100

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم