TextView android:ellipsize="marquee" 未按预期工作

2024-01-07

我在 ListView 中有一些自定义元素,据了解,每个元素只是 LinearLayout 中的 TextView。 当文本太长时,我希望 TextView 内的文本成为水平滚动的单行。我阅读了很多关于此问题的文章,并提出了一个应该可行的解决方案,但我没有让全文滚动,而是将文本剪切到包含视图的长度,并以三个点结束。我不需要三个点,但整个文本需要滚动。

这是列表中项目的布局 (list_item.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listItem"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/list_item_selector"
    android:orientation="horizontal"
    android:paddingBottom="7dp"
    android:paddingLeft="15dp"
    android:paddingTop="7dp" >

    <TextView
        android:id="@+id/listText"
        style="@style/Text_View_Style_White"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever" 
        android:padding="3dp"

        android:selectAllOnFocus="true"
        android:singleLine="true"
        android:textColor="@drawable/list_item_text_selector" />


</LinearLayout>

我也尝试过android:focusable="true", android:scrollHorizontally="true" and android:maxLines="1"属性,但它们都不起作用。在里面getView()适配器的方法(扩展了 BaseAdapter)我使用setSelected(true)返回 View 之前,在 TextView 上调用方法。

我不知道问题出在哪里。任何帮助将不胜感激。


我今天遇到了同样的问题并且能够解决它。这里列出的解决方案都不起作用,所以我想我应该分享一下为我解决问题的方法。

TL;DR:如果要动态设置 TextView 的文本,请尝试在代码中而不是在布局 xml 文件中设置所需的“选取框”属性。

更长的版本:就我而言,我有一个带有适配器的 GridView 和每个项目中的 TextView。有些项目的文本太长,无法放入网格的“单元格”中,因此我希望所有太长的项目都无法滚动几次。由于 TextView 位于带有适配器的 GridView 中,因此文本显然是从适配器的当前项在代码中设置的。

经过非常痛苦的调试,我终于有了在代码中设置所有选取框设置的想法instead布局 xml 文件中的。这导致 3 个点 (...) 最终离开 TextView 并开始滚动。

这是我的布局文件现在的样子: (请注意,此处未设置上面列出的任何属性)

<TextView
android:text="Placeholder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:id="@+id/name"
/>

这是我的适配器代码的样子:

nameView.setText(name);
nameView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
nameView.setSingleLine(true);
nameView.setMarqueeRepeatLimit(5);
nameView.setSelected(true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TextView android:ellipsize="marquee" 未按预期工作 的相关文章

随机推荐

  • 通过在另一个模块中混合来覆盖模块混合行为

    我希望能够来回切换实例如何响应消息 我想通过混合一个模块 然后混合另一个模块来覆盖该行为来做到这一点 Example module Dog def speak puts woof woof end end module Cat def sp
  • 使用数组 C# 中的值过滤数据表

    我有一个删除方法 它获取一个 GUID 数组 并且我有一个数据表 如何过滤数据表 使其仅包含 GUID public void delete Guid guidlist datatable template ReadTemplateList
  • 无效查询参数的 HTTP 404 与 400

    这是我的请求网址 http server com app user getuser userId 9999 http server com app user getuser userId 9999 注意userId是查询参数 未嵌入路径参数
  • 如何在 NEXT JS 中的路由之间传递状态?

    我的页面中有一个对象内的数据 我想从该页面重定向到另一个页面以及数据 如下面的代码 const redirectAppointmentStep1 value gt router push pathname Appointment booki
  • 使用“new”创建对象时使用“return”

    我今天发现了一些非常奇怪的事情 如果你使用构造函数创建对象并且new关键字 但是return来自构造函数的函数 其行为如下 新创建的 对象 是一个函数 这个新函数可以像平常一样调用 但是 如果您保留对this在构造函数中 this引用从构造
  • 在流体容器中,我可以使元素的高度和宽度一样吗?

    我正在使用 container fluid 并且对于使用 span2 等在列上进行水平宽度设置非常有效 我有一个独特的要求 即我想要呈现 方形 的东西 同时仍然享受 Bootstrap 响应式宽度设置的好处 有没有一种好方法可以确保我的元素
  • FormView 绑定中的 DropDownList

    我想将下拉列表绑定到List
  • jQuery 的scrollLeft 不起作用

    我刚刚推出http elliewauters com http elliewauters com有一个我想解决的小问题 该网站使用大量动画水平滚动从一个 页面 到下一个 页面 但刷新时大多数浏览器都会记住滚动位置并返回到之前的位置 我不想要
  • 如何在 Nginx 上使用 PHP 以不同用户身份运行 shell 脚本?

    尝试使用 POST 请求触发 shell 脚本 由 nginx 处理 到目前为止还没有成功 我拥有的 exec whoami nginx nginx x 220 498 Nginx web server var lib nginx sbin
  • AWS Lambda 函数 - 将 PDF 转换为图像

    我正在开发应用程序 用户可以在其中上传一些 pdf 格式的图纸 上传的文件存储在S3上 上传后 文件必须转换为图像 为此 我创建了 lambda 函数 该函数将文件从 S3 下载到 lambda 执行环境中的 tmp 文件夹 然后从 ima
  • 设置 Excel 列标题格式以获得更好的可见性和颜色

    我浏览了很多帖子 但没有找到执行以下操作的确切方法 很抱歉附上屏幕截图 只是为了更好的可见性 我也会写它 基本上它看起来像 Name of the Man Address of Man City Jordan NC LMN 输入 csv 看
  • CSS 预处理器还是 PHP?

    如果我用 PHP 编写代码 是否有理由使用 CSS 预处理器而不是 PHP 例如 我可以通过在标头中添加以下内容来在 CSS 文件中使用 PHP 这样我就可以向它传递变量 例如style php color 000 或者我可以使用类似的东西
  • jq:错误:test1/0 未在 处定义,第 1 行

    我有下面的 JSON 文件 并且在尝试在 shell 中动态向数组添加值时遇到错误 下面是一个 tmp json 文件 environments integration testing for jenkins job prod stagin
  • 使用 C# 驱动程序从 mongo 集合中获取 DateTime

    我有以下对象 public class QueueItem public long id get set public SiteMapRequestState State get set public int WorkerId get se
  • 如何查找Android设备的序列号?

    我需要为 Android 应用程序使用唯一的 ID 并且我认为设备的序列号是一个不错的选择 如何在我的应用程序中检索 Android 设备的序列号 TelephonyManager tManager TelephonyManager myA
  • 如何在 QML 中设置 MessageDialog 的默认按钮?

    默认按钮是 是 但我想将按钮 否 设置为默认按钮 怎么做 我看不到任何方法可以通过当前的方式实现这一目标MessageDialogAPI 但我也认为这是特定于平台的 这就是它被隐藏的原因 不过 您可以创建自己的对话框 import QtQu
  • 通过定时器写入数据库的后台任务

    如何在后台的计时器上写入数据库 例如 检查邮件并向数据库添加新信件 在示例中 我在写入数据库之前简化了代码 Microsoft 示例中的类名称 录音类本身 namespace EmailNews Services internal inte
  • Camunda 无法执行 groovy 脚本

    这是我的依赖项 compile group org camunda bpm springboot name camunda bpm spring boot starter webapp version 3 0 0 compile group
  • 文件浏览器java

    我希望在 Java 应用程序中拥有某种文件浏览器 例如 Windows 资源管理器 我只想要能够递归列出文件夹内文件的东西 有没有一种简单的方法可以做到这一点 我已经尝试使用 JFileChooser 但这不是我想要的 此代码片段允许您递归
  • TextView android:ellipsize="marquee" 未按预期工作

    我在 ListView 中有一些自定义元素 据了解 每个元素只是 LinearLayout 中的 TextView 当文本太长时 我希望 TextView 内的文本成为水平滚动的单行 我阅读了很多关于此问题的文章 并提出了一个应该可行的解决