如何在微调器中包装冗长的文本?

时间:2011-05-24 08:12:56

标签: android text spinner android-spinner textwrapping

我在一个单独的行的表布局视图中有两个微调器和EditText控件。微调器中填充了数据。我的问题是填充到微调器中的数据(文本)太长而不适合屏幕大小。因此,旋转器被迫拉伸不必要地拉伸另一排的其他控件。

我必须在旋转器中显示文本。因此,使用省略号不是一种选择。如果有可能我怎样才能在纺纱机上包装冗长的文字?

2 个答案:

答案 0 :(得分:60)

第1步。 带有包装文字的TextView

要做的第一件事是强制简单的TextView来包装文本。很容易:

<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:singleLine="false"
    android:text="very long text that will be wrapped to next line" />

请注意此处的singleLine属性。

第2步。 自定义布局

现在我们应该以某种方式将singleLine属性设置为false TextView Spinner,以显示列表中的项目。

在您的代码中,您可能会在其中创建适配器以将其与Spinner一起使用:

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

我们的想法是将android.R.layout.simple_spinner_dropdown_item布局复制到您的项目中。然后将singleLine属性设置为false中的CheckedTextView

进行修改

为此,使用下一个代码将文件添加到名为res/layout的{​​{1}}文件夹中:

multiline_spinner_dropdown_item.xml

请注意,此文件与android.R.layout.simple_spinner_dropdown_item布局相同,但现在<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:singleLine="false" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:ellipsize="marquee" /> 设置为singleLine除外。

第3步。 使用自定义布局创建适配器

将适配器创建代码修改为:

false

以下是来自Android SDK的修改后的this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets, R.layout.multiline_spinner_dropdown_item); 示例的屏幕截图:

enter image description here

答案 1 :(得分:-4)

定义自定义布局并将其与微调器和适配器一起使用。