Как сделать заголовок раздела в ListView, который всегда торчит сверху? - PullRequest
4 голосов
/ 13 февраля 2012

Android не поддерживает заголовки разделов в ListView по умолчанию.Основываясь на моих исследованиях, я узнал, что есть два способа реализовать заголовок раздела в ListView.Первый заключается в поддержке двух типов представлений в виде списка: представление разделителя и представление содержимого.Второе - включить представление разделителя во все представления содержимого и просто установить видимость представления разделителя на VISIBLE или GONE.Я использую второй метод.

Однако, когда я прокручиваю ListView вверх, заголовок раздела также прокручивается вверх.Я знаю, что это нормально.Но я хочу, чтобы заголовок раздела оставался сверху, пока некоторые данные, принадлежащие его разделу, все еще отображаются.Поведение, которое я хочу выполнить, аналогично поведению заголовков разделов UITableView в iOS.Как мне это сделать?

Кроме того, я хотел бы отметить, что я прочитал, что одним из решений для этого является создание представления над ListView и просто изменение его при необходимости.Однако это не будет работать для всех телефонов.Например, ListView на телефонах Samsung отскакивает.Если бы я поместил представление над ListView, чтобы оно действовало как заголовок, а ListView отскочил, фиктивный заголовок не отскочил вместе с ListView.Кроме того, верхнюю часть ListView по умолчанию можно легко обнаружить, поскольку он светится при прокрутке ListView.Есть ли способ достичь указанного эффекта, убедившись, что он по-прежнему выглядит естественно?

На рисунке ниже показана проблема, с которой я столкнусь, если просто добавлю текстовое представление поверх списка: (взято из SamsungGalaxy S2)

enter image description here

1 Ответ

0 голосов
/ 14 февраля 2012

см. В этом xml + символ является статическим, вы получите некоторую помощь

                   <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
    android:id="@+id/linearlayout">
<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:background="#00ffff">
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/plus" />
</LinearLayout>
<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:orientation="vertical">
    </LinearLayout>
</ScrollView>

...