17

ArrayAdapter を使用して文字列のリストが入力された Android スピナーがあり、正常に動作しますが、スピナーの表示方法が原因で、リスト項目の表示高さの問題が発生しています。

一見すると、ArrayAdapter は単一のレイアウトを使用してオプションを表示できるように見えますが、これが私が抱えている問題につながります。スピナーに現在のアイテムを表示するとき (ユーザーがリストから新しいアイテムを選択していないとき)、スピナーはテキストをパディングして、スピナーがクリックするのに適切なサイズになるようにします。ただし、ユーザーがそれをタップしてリストを表示し、新しいアイテムを選択すると、表示されるリスト アイテムの高さが小さすぎます。リスト項目を適切な高さで表示する項目レイアウトを使用すると、リスト項目の独自のパディングにより、スピナー自体が法外に巨大になります。

これらの 2 つの項目表示モードの高さを管理して、スピナーの高さがリスト項目の表示高さよりも大きいのではなく、同じ高さの値で効果的に表示する方法についてのアイデアはありますか?

4

2 に答える 2

44

少し前にこの問題に遭遇しましたが、ドロップダウンと表示に異なるレイアウトを使用する必要があることがわかりました

私はこのコードを持っています:

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);
于 2010-06-13T19:33:22.403 に答える
13

はい、上記の答えは正しいです。

2.2 Android の SDK サンプルでは間違っているため、これを見つけるのに永遠にかかりました。そして、私はそれを受け入れるのに苦労しました。

これは、samples/android-12/Spinner/src/com/android/example/spinner/SpinnerActivity.java のスニペットです。

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

android.R.layout.simple_spinner_item代わりにそこにある必要がありsimple_spinner_dropdown_item、ドロップダウン項目にのみ使用する必要があります。そうしないと、スピナーの矢印が引き伸ばされ、ドロップダウン選択の円もディスプレイに描画されます。

于 2011-05-31T21:34:18.027 に答える