gpt4 book ai didi

android - TextView 安卓 :ellipsize ="marquee" not working as expected

转载 作者:可可西里 更新时间:2023-11-01 19:09:03 26 4
gpt4 key购买 nike

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

这是列表中项目的布局(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:scrollHorizo​​ntally="true"android:maxLines="1" 属性,但它们都不起作用。在适配器(扩展了 BaseAdapter)的 getView() 方法中,我在返回 View 之前对 TextView 使用了 setSelected(true) 方法。

我不知道是什么问题。任何帮助将不胜感激。

最佳答案

我今天遇到了同样的问题,并且能够解决。此处列出的解决方案均无效,因此我想我会分享为我修复它的方法。

长话短说:如果您要动态设置 TextView 的文本,请尝试在代码中而不是在布局 xml 文件中设置所需的“marquee”属性。

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

经过多次痛苦的调试,我终于想到用代码而不是在布局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);

关于android - TextView 安卓 :ellipsize ="marquee" not working as expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17402911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com