关于SO的第一个问题,如果我说错了,请告诉我。就像标题所说的那样,我希望我的列表视图中每个项目中的文本保持在一行(如果长度超过了适合使它们以&#34结束; ..."或类似的东西) 。我有一种"最近的搜索"在我的Android应用程序中,将它们全部保存在一个字符串数组中,然后我将它们显示在listview中,如下所示:
ListView recenlist = (ListView) findViewById(R.id.recentChatList);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, recCharArray);
recenlist.setAdapter(adapter);
recenlist.setTextFilterEnabled(true);
其中recCharArray包含一堆大小不等的字符串并显示在listview中。但是,他们应该留在一排但不要。我曾尝试过singleLine,maxLines,但我无法让它工作。有什么想法吗?
然后在XML中:
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recentChatList"
android:layout_below="@+id/searchField"
android:layout_alignParentStart="true"
android:layout_marginTop="45dp" />
我一直在寻找很多,但我似乎无法找到适合我的解决方案,我是否需要一种新方法?我需要完全改变一些东西吗?
提前致谢!
答案 0 :(得分:2)
请注意,您正在为android.R.layout.simple_list_item_1
中的行使用预定义的xml文件ListView
。你可以在这里看到这个文件中的代码:
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/simple_list_item_1.xml
尝试使用单个custom_simple_list_item.xml
在layouts文件夹中制作您自己的布局文件(TextView
)并设置android:singleLine = "true"
和android:ellipsize = "end"
。重用上一个链接中的代码,类似于:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:singleLine = "true"
android:ellipsize = "end"
/>
然后,在适配器初始化中使用此文件:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_simple_list_item, recCharArray);
答案 1 :(得分:0)
您可以使用自定义Adapter
,您的适配器将包含TextView
,TextView应位于一行(singleLine="true"
)。 link {{3}}为ListView
制作自定义适配器。