شرح MultiAutoCompleteTextView في الإندرويد

برنامج MultiAutoCompleteTextView مع مثال في Android Studio

في Android ، يعد MultiAutoCompleteTextView برنامج TextView قابل للتحرير يوسع AutoCompleteTextView  والذي يمكنه عرض الاقتراح الكامل للسلسلة الفرعية للنص مما يسمح للمستخدم بالاختيار بسرعة بدلاً من الكتابة بالكامل. و AutoCompleteTextView  يقدم سوى اقتراح حول الجملة بأكملها و MultiAutoCompleteTextView  العروض اقتراح لكل رمز في الجملة. يمكننا تحديد ما هو الفاصل بين الرموز.

MultiAutoCompleteTextView في Android

ملاحظة مهمة:  أحد الاختلافات الأكثر أهمية بين MultiAutoCompleteTextView و  AutoCompleteTextView هو أن AutoCompleteTextView يمكنه الاحتفاظ أو تحديد قيمة واحدة فقط في وقت واحد ولكن MultiAutoCompleteTextView يمكن أن يحمل قيمة كلمات سلسلة متعددة في وقت واحد. يتم فصل جميع هذه القيم بفاصلة (،).

التعليمات البرمجية الأساسية MultiAutoCompleteTextView في XML:

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="This Is A MultiAutoCompleteTextView" />
  

المحول المستخدم لملء البيانات في MultiAutoCompleteTextView

لعرض محتوى المصفوفة في MultiAutoCompleteTextView ، نحتاج إلى تنفيذ المحول . في MultiAutoCompleteTextView ، نظرًا لأننا نعرض القيم النصية بشكل أساسي ، لذلك نستخدم ArrayAdapter لذلك. يوجد أدناه وصف ArrayAdapter.

ArrayAdapter في Android:

عندما تكون لدينا قائمة بنوع واحد من العناصر التي تدعمها مصفوفة ، يمكننا استخدام ArrayAdapter. على سبيل المثال ، قائمة جهات اتصال الهاتف أو البلدان أو الأسماء.

كود ArrayAdapter في Android:

ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
  

في مقتطف الشفرة أعلاه نعرض تنفيذ ArrayAdapter. تُستخدم هذه المعلمات الأربعة لإظهار قائمة العناصر في MultiAutoCompleteTextView الموضحة بالفعل في البرنامج التعليمي ArrayAdapter .


استرداد القيمة من MultiAutoCompleteTextView في فئة Java:

يوجد أدناه مثال على الكود حيث نسترد القيمة من MultiAutoCompleteTextView في فئة Java .

// initiate a MultiAutoCompleteTextView
    MultiAutoCompleteTextView simpleMultiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.simpleMultiAutoCompleteTextView);
    String MultiAutoCompleteTextViewValue = simpleMultiAutoCompleteTextView.getText().toString(); // retrieve  a value from MultiAutoCompleteTextView
  

طرق مهمة لـ MultiAutoCompleteTextView:

دعونا نناقش بعض الطرق المهمة لـ MultiAutoCompleteTextView والتي قد يتم استدعاؤها من أجل إدارة MultiAutoCompleteTextView.

1.  setTokenizer (MultiAutoCompleteTextView.Tokenizer t):  تحدد هذه الطريقة الرمز المميز الذي سيتم استخدامه لتحديد النطاق ذي الصلة للنص الذي يكتبه المستخدم. يتم استخدام CommaTokenizer لتعيين الرمز المميز الذي يميز السلاسل الفرعية المختلفة بفاصلة.

أدناه قمنا بتعيين CommaTokenizer لـ MultiAutoCompleteTextView

// initiate a MultiAutoCompleteTextView
    MultiAutoCompleteTextView simpleMultiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.simpleMultiAutoCompleteTextView);
    // set tokenizer that distinguish the various substrings by comma
    simpleMultiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());

2. setThreshold (عتبة int): 

تُستخدم هذه الطريقة لتعيين قيمة حدية تساعدنا على بدء البحث من شخصية معينة. في هذا قمنا بتعيين قيمة نوع int المستخدمة لتحديد العتبة. افترض أنه في حالة تعيين قيمة 1 للعتبة ، في وقت الكتابة ، يبدأ البحث من الحرف الأول.

أدناه قمنا بتعيين قيمة 2 للعتبة التي تساعدنا على بدء البحث من الحرف الثاني.

// initiate a MultiAutoCompleteTextView
    MultiAutoCompleteTextView simpleMultiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.simpleMultiAutoCompleteTextView);
    // set threshold value 2 that help us to start the searching from second character
    simpleMultiAutoCompleteTextView.setThreshold(2);

سمات وخصائص MultiAutoCompleteTextView :

الآن دعنا نناقش بعض السمات المهمة التي تساعدنا في تكوين MultiAutoCompleteTextView في ملف xml .

1. المعرف id :  تُستخدم هذه السمة لتعريف MultiAutoCompleteTextView بشكل فريد.

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="This Is A MultiAutoCompleteTextView" /> <!--  id of a MultiAutoCompleteTextView that is used to uniquely identify it -->
  

2. الجاذبية gravity : هذه سمة اختيارية تُستخدم للتحكم في محاذاة النص مثل اليسار ، واليمين ، والوسط ، والأعلى ، والأسفل ، والمركز الرأسي ، والمركز الأفقي ، إلخ.

الجاذبية في MultiAutoCompleteTextView Android

أدناه قمنا بتعيين الجاذبية الصحيحة لنص MultiAutoCompleteTextView.

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:text="AbhiAndroid.Com" /> <!--  right gravity for the displayed text of MultiAutoCompleteTextView -->
  

3. النص text:  يتم استخدام هذه السمة لتعيين النص في MultiAutoCompleteTextView. يمكننا ضبط النص في xml وكذلك فيفئة java .

في المثال الثاني أعلاه ، استخدمنا أيضًا سمة النص.

إعداد النص في MultiAutoCompleteTextView في فئة Java:

MultiAutoCompleteTextView simpleMultiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.simpleMultiAutoCompleteTextView);
    simpleMultiAutoCompleteTextView.setText("AbhiAndroid"); // set text in a MultiAutoCompleteTextView
  

4. تلميح hint:  يتم استخدام هذه السمة لتعيين التلميح إلى ما يجب عليك إدخاله في MultiAutoCompleteTextView هذا. عندما يبدأ المستخدم في الكتابة في MultiAutoCompleteTextView ، سيختفي التلميح تلقائيًا.

أدناه قمنا بتعيين تلميح MultiAutoCompleteTextView.

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Enter Your Text Here" /><!-- set hint in MultiAutoCompleteTextView -->
  

تلميح في MultiAutoCompleteTextView

إعداد تلميح في MultiAutoCompleteTextView في فئة Java:

MultiAutoCompleteTextView simpleMultiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.simpleMultiAutoCompleteTextView);
    simpleMultiAutoCompleteTextView.setHint("Enter Your Text Here"); // set hint in a MultiAutoCompleteTextView
  

5. textColor:  تُستخدم هذه السمة لتعيين لون النص في MultiAutoCompleteTextView. تكون قيمة اللون على شكل "#argb" أو "#rgb" أو "#rrggbb" أو "#aarrggbb".

أدناه قمنا بتعيين اللون الأحمر للنص المعروض في MultiAutoCompleteTextView.

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="AbhiAndroid.Com"
    android:textColor="#f00"/>
    <!-- red color for the displayed text of a MultiAutoCompleteTextView -->
  

textColor في MultiAutoCompleteTextView Android

ضبط النص اللون في MultiAutoCompleteTextView في فئة Java:

MultiAutoCompleteTextView simpleMultiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.simpleMultiAutoCompleteTextView);
    simpleMultiAutoCompleteTextView.setTextColor(Color.RED); // red color for the displayed text of a MultiAutoCompleteTextView
  

6. textColorHint:  تُستخدم هذه السمة لتعيين لون نص التلميح المعروض.

أدناه قمنا بتعيين اللون الأزرق للتلميح المعروض لـ MultiAutoCompleteTextView.

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Enter Your Text Here"
    android:textColorHint="#00f"/>
    <!-- blue color for displayed hint text of a MultiAutoCompleteTextView -->
  

textColorHint في MultiAutoCompleteTextView Android

ضبط textColorHint في MultiAutoCompleteTextView في فئة Java:

MultiAutoCompleteTextView simpleMultiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.simpleMultiAutoCompleteTextView);
    simpleMultiAutoCompleteTextView.setHintTextColor(Color.BLUE); // blue color for the displayed hint text of a MultiAutoCompleteTextView
  

7. textSize:  تستخدم هذه السمة لتعيين حجم نص MultiAutoCompleteTextView. يمكننا ضبط حجم النص في sp (مقياس بكسل مستقل) أو dp (كثافة بكسل).

أدناه قمنا بتعيين حجم 25sp لنص MultiAutoCompleteTextView.

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="AbhiAndroid.Com"
    android:textColor="#f00"
    android:textSize="25sp"/><!-- 25 sp text size of a  MultiAutoCompleteTextView -->
  

حجم النص في MultiAutoCompleteTextView

ضبط النص الحجم في MultiAutoCompleteTextView في فئة Java:

MultiAutoCompleteTextView simpleMultiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.simpleMultiAutoCompleteTextView);
    simpleMultiAutoCompleteTextView.setTextSize(25); // 25 sp text size of a MultiAutoCompleteTextView
  

8. textStyle:  تُستخدم هذه السمة لتعيين نمط النص في MultiAutoCompleteTextView. أنماط النص الممكنة هي غامقة ومائلة وعادية. إذا احتجنا إلى استخدام نمطين أو أكثر من أجل MultiAutoCompleteTextView ، فحينئذٍ "|" عامل يستخدم لذلك.

أدناه قمنا بتعيين النمط الغامق للنص المعروض في MultiAutoCompleteTextView.

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="AbhiAndroid.Com"
    android:textColor="#f00"
    android:textSize="25sp"
    android:textStyle="bold"/><!-- bold style for the displayed text of a MultiAutoCompleteTextView -->
  

textStyle في MultiAutoCompleteTextView

9. الخلفية background :  تُستخدم هذه السمة لتعيين خلفية MultiAutoCompleteTextView. يمكننا ضبط اللون أو الرسم (صورة أو xml قابلللرسممخصص) في خلفية MultiAutoCompleteTextView.

أدناه قمنا بتعيين اللون الأخضر للخلفية واللون الأحمر للنص المعروض في MultiAutoCompleteTextView.

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="AbhiAndroid.Com"
    android:textColor="#f00"
    android:textSize="25sp"
    android:textStyle="bold"
    android:background="#0f0"/><!-- green background color of a MultiAutoCompleteTextView -->
  

الخلفية في MultiAutoCompleteTextView

إعداد الخلفية في MultiAutoCompleteTextView في فئة Java:

MultiAutoCompleteTextView simpleMultiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.simpleMultiAutoCompleteTextView);
    simpleMultiAutoCompleteTextView.setBackgroundColor(Color.GREEN); // green color for the background of a MultiAutoCompleteTextView
  

10. الحشو padding : تُستخدم هذه السمة لتعيين المساحة المتروكة من الجانب الأيسر أو الأيمن أو العلوي أو السفلي من MultiAutoCompleteTextView.

  • padding إلى اليمين : اضبط المساحة المتروكة من الجانب الأيمن من MultiAutoCompleteTextView .
  • paddingLeft: اضبط المساحة المتروكة من الجانب الأيسر من MultiAutoCompleteTextView .
  • paddingTop: اضبط المساحة المتروكة من الجانب العلوي لـ MultiAutoCompleteTextView .
  • paddingBottom: اضبط الحشوة من الجانب السفلي من MultiAutoCompleteTextView .
  • الحشوة : اضبط الحشوة من جميع جوانب MultiAutoCompleteTextView .

أدناه قمنا بتعيين حشوة 40dp من الجانب الأيسر من MultiAutoCompleteTextView.

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="AbhiAndroid.Com"
    android:textColor="#f00"
    android:textSize="25sp"
    android:textStyle="bold"
    android:background="#0f0"
    android:paddingLeft="40dp"/>
    <!-- 40dp padding from left side of a MultiAutoCompleteTextView -->
  

الحشو في MultiAutoCompleteTextView Android

11. drawableBottom، drawableTop، drawableRight and drawableLeft:  هذه السمة ترسم الرسم القابل للرسم أدناه ، أعلى ، يمين ويسار نص MultiAutoCompleteTextView.

أدناه قمنا بتعيين الرمز إلى أعلى نص MultiAutoCompleteTextView باستخدام drawableTop. بنفس الطريقة يمكنك تجربة السمات الثلاثة الأخرى بنفسك.

قم أولاً بحفظ صورة اسم ic_launcher في مجلد قابل للرسم إذا لم يكن موجودًا واستخدم الكود أدناه.

<MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#0f0"
    android:drawableTop="@drawable/ic_launcher"
    android:text="AbhiAndroid.Com"
    android:gravity="center"
    android:textColor="#f00"
    android:textSize="25sp"
    android:textStyle="bold" />
    <!-- drawableTop of a MultiAutoCompleteTextView -->
  

قابل للرسم في MultiAutoCompleteTextView


مثال MultiAutoCompleteTextView في Android Studio

يوجد أدناه مثال MultiAutoCompleteTextView حيث نعرض MultiAutoCompleteTextView مع قائمة اقتراحات بأسماء إصدارات android. لملء البيانات في هذه القائمة ، نقوم بتطبيق محول مصفوفة . وضعنا قيمة الحد 1 التي تساعدنا على بدء البحث من الحرف الأول.

يمكنك أدناه تنزيل كود المشروع الكامل والمخرج النهائي والشرح خطوة بخطوة للمثال:

تحميل كود المشروع  ؟

مثال MultiAutoCompleteTextView في Android Studio

الخطوة 1 :  قم بإنشاء مشروع جديد وقم بتسميته MultiAutoCompleteTextView

الخطوة 2:  افتح res -> layout -> activity_main.xml (أو) main.xml وأضف الكود التالي:

في هذه الخطوة ، نفتح ملف xml ونضيف الكود لعرض MultiAutoCompleteTextView باستخدام سماته المختلفة.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">


    <!--  MultiAutoCompleteTextView In Android -->
    <MultiAutoCompleteTextView
    android:id="@+id/simpleMultiAutoCompleteTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#0f0"
    android:gravity="center"
    android:hint="Enter Your Text Here"
    android:padding="10dp"
    android:textColor="#f00"
    android:textSize="20sp"
    android:textStyle="bold" />

    </RelativeLayout>
  

الخطوة 3:  افتح src -> package -> MainActivity. جافا

في هذه الخطوة ، نفتح MainActivity ونضيف الكود لبدء MultiAutoCompleteTextView ثم نضيف البيانات إلى قائمة الاقتراحات باستخدام ArrayAdapter. في هذا قمنا أيضًا بتعيين قيمة العتبة 1 التي تساعدنا على بدء البحث من الحرف الأول.

package example.abhiandroid.multiautocompletetextviewexample;

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.ArrayAdapter;
    import android.widget.MultiAutoCompleteTextView;

    public class MainActivity extends AppCompatActivity {

    String[] androidVersionNames = {"Aestro", "Blender", "CupCake", "Donut", "Eclair", "Froyo", "Gingerbread", "HoneyComb", "IceCream Sandwich", "Jellibean", "Kitkat", "Lollipop", "MarshMallow"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // initiate a MultiAutoCompleteTextView
    MultiAutoCompleteTextView simpleMultiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.simpleMultiAutoCompleteTextView);
    // set adapter to fill the data in suggestion list
    ArrayAdapter<String> versionNames = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, androidVersionNames);
    simpleMultiAutoCompleteTextView.setAdapter(versionNames);

    // set threshold value 1 that help us to start the searching from first character
    simpleMultiAutoCompleteTextView.setThreshold(1);
    // set tokenizer that distinguish the various substrings by comma
    simpleMultiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
    }
    }
  

المخرجات :

الآن قم بتشغيل التطبيق وسترى MultiAutoCompleteTextView. أدخل هنا أي حرف وسيظهر إصدار Android المقابل لتلك الشخصية. حدده وافعل الشيء نفسه مع إصدار Android الآخر. يمكنك أن ترى أنه يمكن أن يحتوي على أكثر من قيمة واحدة والتي لم تكن ممكنة مع AutoCompleteTextView.