如何在旋转器中换行较长的文本?

发布于 2024-11-09 12:28:21 字数 168 浏览 5 评论 0原文

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

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

I have two spinner and EditText controls within a table layout view on a separate row. The spinners are populated with data. My problem is the data (texts) that are populated into the spinners are too lengthy to fit the screen size. Therefore, the spinners are forced to stretch unnecessarily stretching other controls on another row.

It's a must for me to show the texts in the spinner. Hence using ellipses is not an option. If it's possible how can I wrap the lengthy text on the spinners?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苏辞 2024-11-16 12:28:21

第 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 显示列表中的项目。

在您的代码中,您可能有地方创建适配器以将其与 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 进行修改:

为此,请将文件添加到 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 现在设置为 false

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

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

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

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

在此处输入图像描述

Step 1. TextView with wrapped text

The first thing to do is to to force simple TextView to wrap text. Its easy:

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

Note the singleLine attribute here.

Step 2. Custom layout

Now we should somehow set singleLine attribute to false in TextView used by Spinner to show the item in the list.

In your code you probably have place where you create adapter to use it with Spinner:

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

The idea is to copy the android.R.layout.simple_spinner_dropdown_item layout to your project. Then modify it by setting singleLine attribute to false in CheckedTextView:

For this, add file to res/layout folder named multiline_spinner_dropdown_item.xml with next code:

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

Note that this file is identical to android.R.layout.simple_spinner_dropdown_item layout, except it has singleLine set to false now.

Step 3. Creating Adapter with custom layout

Modify your adapter creating code to:

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

Here is screenshot from modified SpinnerActivity example from Android SDK:

enter image description here

被翻牌 2024-11-16 12:28:21

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

Define a custom layout and use it with the spinner and adapter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文