سؤال

لديّ عبارة عن Spinner Android يسكنها قائمة من الأوتار باستخدام ArrayAdapter وهي تعمل بشكل جيد ، ولكن بسبب الطريقة التي يتم بها عرض الدوار ، فأنا أواجه مشكلة في ارتفاع العرض مع عناصر القائمة.

للوهلة الأولى ، يبدو أن ArrayAdapter يمكنه استخدام تصميم واحد لعرض الخيارات التي تؤدي إلى المشكلة التي أواجهها. عند عرض العنصر الحالي في Spinner (عندما لا يحدد المستخدم عنصرًا جديدًا من القائمة) ، فإن Spinner Pads النص بحيث يكون الدوار بحجم معقول للنقر فوق. ومع ذلك ، عندما يقوم المستخدم بنقره عليه ويعرض القائمة لتحديد عنصر جديد ، تكون عناصر القائمة المقدمة طريقة للارتفاع الصغير. إذا استخدمت تخطيط عنصر يعرض عناصر القائمة على ارتفاع معقول ، فإن الدوار نفسه يصبح ضخمًا بسبب حشوة عنصر القائمة.

أي أفكار حول كيفية إدارة ارتفاع وضعي عرض هذين العنصر بحيث يتم عرضها بفعالية بنفس قيمة الارتفاع بدلاً من ارتفاع الدوار أكبر من ارتفاع عرض عنصر القائمة؟

هل كانت مفيدة؟

المحلول

لقد واجهت هذه المشكلة بنفسي منذ فترة ، واتضح أنني بحاجة إلى استخدام تخطيطات مختلفة للمنزل والعرض

لدي هذا الرمز:

adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cGroups,
                new String[] {
                        "name", "_id"
                }, new int[] {
                    android.R.id.text1
                });
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

نصائح أخرى

نعم ، الجواب أعلاه صحيح.

استغرق الأمر مني إلى الأبد للعثور على هذا ، لأنه خطأ في عينات SDK لـ 2.2 Android. وكان لدي صعوبة في قبول ذلك.

فيما يلي مقتطف من العينات/Android-12/Spinner/SRC/COM/Android/مثال/Spinner/SpinnerActivity.java:

       this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets,
                android.R.layout.simple_spinner_dropdown_item);

بينما ينبغي أن يكون android.R.layout.simple_spinner_item هناك بدلا من ذلك و simple_spinner_dropdown_item يجب استخدامها فقط للعناصر المنسدلة. وإلا فإن سهم الدوران يحصل على حدوثه ويسحب دائرة التحديد المنسدلة إلى الشاشة أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top