8

我正在尝试创建在所有版本的 Android 上看起来都相同的 Spinner,回到 Froyo。为此,我正在使用HoloEverywhere。一些微调器项目文本不止一行,我希望它换行。

使用默认布局,android.R.layout.simple_spinner_dropdown_itemHoloEverywhere 的替代它,省略文本而不是换行。

以 HoloEverywhere 的布局作为自定义布局的起点,singleLine设置为falseellipsize设置为nonelayout_height设置为wrap_content无济于事,文本仍然被截断。

可以TextView通过将a包裹在下拉列表中正确包裹文本LinearLayout,但在Froyo设备上,这会弄乱所选项目的显示: 每次你无法统一回顾弗罗约时,杰克沃顿都会流下一滴眼泪。

此方法适用于较新的设备。下拉项目布局适用于所有设备。但是,当我使用自定义下拉项布局时,Froyo会将此奇怪的文本重叠。每个选择都堆积在最后一个之上。

这个问题: Spinner does not wrap text -- 这是一个 Android 错误吗?关于 Spinners 中的文本换行表明,唯一的方法是从头开始重新创建样式而不继承,但这听起来很疯狂并且容易出现问题。

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));
4

2 回答 2

8

我找到了解决方案。由于微调器的初始显示只能处理文本视图,因此文本被换行,并且我找到了另一种建议使用线性布局的解决方案。这使得微调器的下拉列表看起来正确。事实证明,适配器有一个名为 setDropDownViewResource() 的资源,它允许您为下拉菜单设置与微调器选择中显示的不同的视图。

 import org.holoeverywhere.widget.Spinner;

 ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,R.array.array_of_strings,R.layout.simple_list_item_1);
 adapter1.setDropDownViewResource(R.layout.my_simple_list_item_1);
 spQ1.setAdapter(adapter1);

在本例中,simple_list_item 是 android 提供的默认视图,而 mY_simple_list_item 是

<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> 

现在文本包裹在微调器的下拉视图和微调器显示的选择中。

于 2013-04-12T22:54:17.117 回答
0

听起来你正在上坡。我的猜测是,您的客户将永远无法通过包装文本获得 100% 可靠且一致的结果。

请参阅: Spinner 不换行 - 这是 Android 错误吗?

于 2013-04-02T00:33:36.790 回答