21

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

我必须在微调器中显示文本。因此,使用省略号不是一种选择。如果可能的话,我怎样才能将冗长的文本包装在微调器上?

4

2 回答 2

61

步骤 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属性设置为falsein TextViewused bySpinner以显示列表中的项目。

在您的代码中,您可能有地方创建适配器以将其用于Spinner

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

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

为此,将文件添加到以下代码res/layout命名multiline_spinner_dropdown_item.xml的文件夹中:

<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设置为falsenow。

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

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

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

SpinnerActivity这是来自 Android SDK修改示例的屏幕截图:

在此处输入图像描述

于 2011-05-24T08:33:37.543 回答
-3

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

于 2011-05-24T08:24:22.513 回答