我在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"
和android:maxLines="1"
属性,但它们都没有起作用。在适配器的getView()
方法中(该适配器扩展了BaseAdapter),我在返回视图之前对TextView使用setSelected(true)
方法。
我无法弄清楚问题出在哪里,请帮我看看。非常感谢您的帮助。
ListView
的setItemsCanFocus(false)
,是否可以解决您的问题?如果不行,还有其他方法可以解决它。 - Tomandroid:selectAllOnFocus="true"
这行代码上。我真的不太明白为什么,但是这行代码导致了我在问题描述中提到的奇怪行为。现在一切都很好,当文本内容过长时,它可以完整地滚动,并且按照预期的方式工作。 - AndreListview
中的onLayout
中,选定的子项“sel”被获取,并且根据一个复杂的条件设置为false,该条件可以有几种方式-其中一种就是上面的方式,另一种就是你的方法。在gtView
中设置setSelected
是不起作用的,因为这一步在列表视图对元素执行onLayout
之前处理。 (需要澄清时,请参见http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/ListView.java/?v=source!) - Tom