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

aby*_*aby 21 android text spinner word-wrap android-spinner

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

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

ina*_*ruk 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" />
Run Code Online (Sandbox Code Playgroud)

请注意singleLine这里的属性.

第2步.自定义布局

现在,我们应该以某种方式设置singleLine属性falseTextView使用的Spinner显示在列表中的项目.

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

this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets,
                android.R.layout.simple_spinner_dropdown_item);
Run Code Online (Sandbox Code Playgroud)

我们的想法是将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" />
Run Code Online (Sandbox Code Playgroud)

请注意,此文件与android.R.layout.simple_spinner_dropdown_item布局相同,但已singleLine设置为falsenow.

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

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

this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets,
                 R.layout.multiline_spinner_dropdown_item);
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

  • 在ICS 4.0.4中失败.任何解决方法? (10认同)
  • 谷歌搜索多线旋转器后偶然发现这个答案,虽然我的微调器项长于2行,但是在`multiline_spinner_dropdown_item.xml`我不得不设置`android:layout_height ="wrap_content"`和`android:ellipsize = "none"`表示我的所有文字都出现在项目列表中 (5认同)

Flo*_*Flo -4

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