Android のすべてのバージョンで Froyo に戻って同じように見えるスピナーを作成しようとしています。そのために、私はHoloEverywhereを使用しています。スピナー アイテムのテキストの一部が複数行になっているため、折り返して表示したいと考えています。
デフォルトのレイアウト 、android.R.layout.simple_spinner_dropdown_item
またはHoloEverywhere のドロップイン置換を使用すると、テキストはラップされずに省略されます。
HoloEverywhere のレイアウトを、singleLine
set to false
、ellipsize
set to none
、およびlayout_height
set toのカスタム レイアウトの開始点として使用wrap_content
しても、テキストはまだ途切れています。
をで囲むことにより、テキストをドロップダウンで正しく折り返すことができますが、FroyoTextView
デバイスでは、選択した項目
の表示が台無しになります。LinearLayout
この方法は、新しいデバイスでは問題なく機能します。ドロップダウン アイテムのレイアウトは、すべてのデバイスで問題ありません。しかし、Froyoでは、カスタム ドロップダウン アイテム レイアウトを使用すると、この奇妙なテキストの重なりが発生します。各選択は、最後の選択の上に積み上げられます。
この質問: Spinner はテキストをラップしません -- これは Android のバグですか? それを行う唯一の方法は、継承せずに最初からスタイリングを再作成することですが、それはクレイジーで問題が発生しやすいように聞こえます。
my_simple_list_item_1.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/android:text1"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:ellipsize="marquee"
android:layout_gravity="center_vertical"
android:singleLine="false"/>
</LinearLayout>
ジャワ:
import org.holoeverywhere.widget.Spinner;
spinner1.setAdapter(ArrayAdapter.createFromResource(this,
R.array.array_of_strings, R.layout.my_simple_list_item_1));