إليكم الفوارق بين LinearLayout و RelativeLayout و AbsoluteLayout؟

إليكم الفوارق بين LinearLayout و RelativeLayout و AbsoluteLayout؟

LinearLayout:

 يعني أنه يمكنك محاذاة المشاهدات واحدًا تلو الآخر (رأسياً/أفقيًا).

LinearLayoutLinearLayout

RelativeLayout:

 تعني استنادًا إلى علاقة المشاهدات من الوالدين وجهات النظر الأخرى.

RelativeLayout

ConstraintLayout:

 يشبه RelativeLayout

لأنه يستخدم العلاقات لوضع الأدوات المصغّرة وحجمها ، ولكنه يتمتع بمرونة إضافية ويسهل استخدامه في محرر التخطيط.

 

WebView لتحميل صفحات html أو ساكنة أو ديناميكية.

WebView

FrameLayout لتحميل طفل واحد فوق الآخر ، مثل البطاقات داخل الإطار ، يمكننا وضع أحدهما فوق الآخر أو في أي مكان داخل الإطار.

FrameLayout

مهملة:

AbsoluteLayout:

 يعني أنك يجب أن تعطي الموضع الدقيق حيث يجب أن يكون العرض.

AbsoluteLayout

لمزيد من المعلومات ، يرجى مراجعة هذا العنوان من هنا

تعريفات:

  • تخطيط الإطار: تم تصميم هذا لمنع منطقة على الشاشة لعرض عنصر واحد.
  • تخطيط خطي: ​​تخطيط يرتب أطفاله في عمود واحد أو صف واحد.
  • النسق النسبي: هذا التصميم عبارة عن مجموعة عرض تعرض طرق عرض فرعية في المواضع النسبية.
  • تخطيط الجدول: تخطيط يرتب أطفاله في صفوف وأعمدة.

معلومات اكثر:

FrameLayout

تم تصميم FrameLayout لحظر مساحة على الشاشة لعرض عنصر واحد. بشكل عام ، يجب استخدام FrameLayout لعقد عرض فرعي واحد ، لأنه قد يكون من الصعب تنظيم طرق عرض child بطريقة قابلة للتوسيع إلى أحجام شاشة مختلفة دون تداخل children مع بعضهم البعض. ومع ذلك ، يمكنك إضافة عدة children إلى FrameLayout والتحكم في موضعهم داخل FrameLayout عن طريق تعيين الجاذبية لكل each child ، باستخدام سمة Android:layout_gravity.

يتم رسم وجهات نظر child في كومة ، مع إضافة child الذي تمت إضافته مؤخرًا على القمة. حجم FrameLayout هو حجم أكبر child له (زائد الحشو) ، مرئيًا أم لا (إذا كان الوالد FrameLayout يسمح بذلك).

RelativeLayout

تعد RelativeLayout أداة مساعدة قوية جدًا لتصميم واجهة المستخدم لأنها يمكن أن تقضي على مجموعات العرض المتداخلة وتحافظ على التسلسل الهرمي لمخططك ، مما يحسن الأداء. إذا وجدت نفسك تستخدم عدة مجموعات LinearLayout متداخلة ، فقد تتمكن من استبدالها بـ RelativeLayout واحدة.

(المستندات الحالية هنا )

TableLayout

يتكون TableLayout من عدد من الكائنات TableRow ، كل منها يحدد صفًا (في الواقع ، يمكن أن يكون لديك child آخرون ، وسيتم شرح ذلك أدناه). لا تعرض حاويات TableLayout خطوط حدود للصفوف أو الأعمدة أو الخلايا. كل صف يحتوي على صفر أو أكثر من الخلايا ؛ كل خلية يمكن أن تعقد كائن عرض واحد. يحتوي الجدول على العديد من الأعمدة مثل الصف مع معظم الخلايا. يمكن أن يترك الجدول خلايا فارغة. يمكن للخلايا أن تمتد عبر الأعمدة ، كما هو الحال في HTML.

يتم تعريف عرض العمود حسب الصف مع أكبر خلية في هذا العمود.

Create a List with RecyclerView

*- شرح انشاء قائمة من خلال خاصية RecyclerView

الشكل 1. قائمة باستخدام RecyclerView

 

 

 

 

 

 

 

الشكل 2. قائمة باستخدام CardView أيضا

 

 

أولا عليكم بإضافة المكتبة :

dependencies {
    implementation 'com.android.support:recyclerview-v7:28.0.0'
}

 

 

أضف RecyclerView إلى التخطيط الخاص بك:

<?xml version="1.0" encoding="utf-8"?>
<!-- A RecyclerView with some commonly used attributes -->
<android.support.v7.widget.RecyclerView
    android:id="@+id/my_recycler_view"
    android:scrollbars="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

مرة واحدة قمت بإضافة القطعة RecyclerView إلى التصميم الخاص بك، يجب الحصول على مؤشر إلى كائن، لأنه ربط مدير التخطيط، وإرفاق محول للبيانات التي سيتم عرضها:

public class MyActivity extends Activity {
    private RecyclerView recyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager layoutManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_activity);
        recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);

        // use this setting to improve performance if you know that changes
        // in content do not change the layout size of the RecyclerView
        recyclerView.setHasFixedSize(true);

        // use a linear layout manager
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);

        // specify an adapter (see also next example)
        mAdapter = new MyAdapter(myDataset);
        recyclerView.setAdapter(mAdapter);
    }
    // ...
}

[tie_tooltip text=”ملاحظة: مع أندرويد ستوديو 3.6 وأعلى، يمكن ميزة ملزمة بالنظر محل findViewById () المكالمات ويوفر وقت الترجمة سلامة نوع لرمز يتفاعل مع وجهات النظر. النظر في استخدام عرض ملزم بدلا من findViewById ().” gravity=”n”]ملاحظة[/tie_tooltip]

إضافة محول قائمة list

لإستيراد جميع البيانات الخاصة بك إلى القائمة، يجب توسيع الطبقة RecyclerView.Adapter.
هذا الكائن ينشأ وجهات النظر للعناصر،
ويحل محل مضمون بعض وجهات النظر مع عناصر البيانات الجديدة
عندما العنصر الأصلي لم يعد مرئيا.

يظهر المثال التالي رمز عرض بسيطة التنفيذ لمجموعة البيانات التي تتكون من مجموعة من السلاسل باستخدام الحاجيات TextView:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    private String[] mDataset;

    // Provide a reference to the views for each data item
    // Complex data items may need more than one view per item, and
    // you provide access to all the views for a data item in a view holder
    public static class MyViewHolder extends RecyclerView.ViewHolder {
        // each data item is just a string in this case
        public TextView textView;
        public MyViewHolder(TextView v) {
            super(v);
            textView = v;
        }
    }

    // Provide a suitable constructor (depends on the kind of dataset)
    public MyAdapter(String[] myDataset) {
        mDataset = myDataset;
    }

    // Create new views (invoked by the layout manager)
    @Override
    public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {
        // create a new view
        TextView v = (TextView) LayoutInflater.from(parent.getContext())
                .inflate(R.layout.my_text_view, parent, false);
        ...
        MyViewHolder vh = new MyViewHolder(v);
        return vh;
    }

    // Replace the contents of a view (invoked by the layout manager)
    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        // - get element from your dataset at this position
        // - replace the contents of the view with that element
        holder.textView.setText(mDataset[position]);

    }

    // Return the size of your dataset (invoked by the layout manager)
    @Override
    public int getItemCount() {
        return mDataset.length;
    }
}

 

لمزيد من التعليمات والشرح تابع هنا

إليكم هذا الشرح الفيديو أيضا

TheEnd

إلى هنا نكون قد انتهينا من الشرح نرجوا أن يكون قد نال إعجابكم

 

 

 

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button