如果Spinner
项目的文本太长,无法放入一行,则文本不会换行,而是会被截断。这只适用于应用编程接口级别的>= 11。这是Android 4.2.2 (左)和Android 2.3.3 (右)的截图,显示了错误的行为。
android:singleLine="false"
在这里被忽略了。因此,像android:lines
、android:minLines
等所有其他尝试一样,TextView
似乎以某种方式比窗口宽度宽得多。
我看到其他人也有同样的问题,但没有人能找到解决方案。那么,这是一个系统错误吗?我不认为操作系统版本之间的这种不一致是故意的。
请注意:
有一些答案建议了相对简单的解决方案。
Adapter
并覆盖getView()
和getDropDownView()
。这不是这里的解决方案,因为在这一点上,仍然存在原始的问题:布局必须看起来如何处理正确的行wrapping?TextView
到父ViewGroup
中。不适用于android:layout_width="match_parent"
,因为奇怪的是,父对象的宽度似乎是下拉式视图的固定宽度。这不适合不同宽度的Spinner
。\n
插入到文本中的任何位置。使用以下代码进行重现:
更新:我也将其作为示例项目上传到GitHub:Download
/res/values/arrays.xml:
<string-array name="items">
<item>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.</item>
<item>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est.</item>
</string-array>
/res/layout/spinner_item.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="none"
android:minHeight="?android:attr/listPreferredItemHeight"
android:singleLine="false" />
设置Adapter
spinner.setAdapter(ArrayAdapter.createFromResource(this,
R.array.items,
R.layout.spinner_item));
发布于 2016-08-26 00:13:04
我通过在文本中添加\n (新行)解决了这个问题(就这么简单)。
<string name="bmr1">sedentary (little or no exercise)</string>
<string name="bmr2">lightly active (light exercise/\nsports 1-3 days/week)</string>
<string name="bmr3">moderately active (moderate exercise/\nsports 3-5 days/week)</string>
<string name="bmr4">very active (hard exercise/\nsports 6-7 days a week)</string>
<string name="bmr5">extra active (very hard exercise/sports &\nphysical job or 2x training)</string>
看起来像这样:
这是微调器作为行使用的布局:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/default_listview_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="false"
android:gravity="center_vertical"
android:textColor="@android:color/white"
android:background="@android:color/transparent"
android:padding="5dp" />
https://stackoverflow.com/questions/14139106
复制相似问题