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

我有一个单独的行的表格布局视图中的两个微调和EditText控件。 纺纱人员填充数据。 我的问题是填充到旋钮中的数据(文本)太长而不适合屏幕尺寸。 因此,纺纱厂被迫不必要地拉伸另一排的其他控制。

这是我必须展示在微调的文字。 因此使用省略号不是一个选项。 如果可能的话,我怎样才能把冗长的文字包裹在旋转器上呢?

Solutions Collecting From Web of "如何在微调器中包装冗长的文本"

第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在由Spinner使用的TextView中显示列表中的项目。

在你的代码中,你可能有创build适配器的地方用于Spinner

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

这个想法是将android.R.layout.simple_spinner_dropdown_item布局复制到您的项目。 然后通过在CheckedTextView singleLine属性设置为false来修改它:

为此,使用下面的代码将文件添加到名为multiline_spinner_dropdown_item.xml res/layout文件夹:

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

请注意,此文件与android.R.layout.simple_spinner_dropdown_item版式相同,只是现在将singleLine设置为false

步骤3.使用自定义布局创build适配器

修改您的适配器创build代码来:

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

以下是Android SDK中修改的SpinnerActivity示例的屏幕截图:

在这里输入图像说明

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