(Android)如何使listview项目中的文本保持一行?

时间:2015-01-24 01:15:54

标签: android listview

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

我一直在寻找很多,但我似乎无法找到适合我的解决方案,我是否需要一种新方法?我需要完全改变一些东西吗?

提前致谢!

2 个答案:

答案 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制作自定义适配器。