2015-01-04 5 views
1

Я хочу добавить вид сверху верхней части списка (назовем его заголовком). Когда пользователь прокручивается вниз, я хочу, чтобы весь контент перемещался вверх (включая заголовок). Однако прямо сейчас, когда пользователь прокручивает заголовок, он остается фиксированным сверху (как в позиции «fixed» на css) вместо прокрутки остальной части содержимого.Добавить вид сверху ListView и переместить все при прокрутке вниз?

Как я могу позволить пользователю прокручивать все, а не только содержимое ListView?

Это то, что мой макет выглядит сейчас:

<?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:background="?attr/color2"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/header" 
    style="@style/header" 
    android:drawableLeft="@drawable/ic_setup" 
    android:text="@string/fragment_contacts"/> 


<ListView android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:drawSelectorOnTop="false" 
    android:fastScrollEnabled="false"> 

</ListView> 

</LinearLayout> 

ответ

5

my_layout_header.xml

Это XML макет заголовка вашего списка.

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:drawableLeft="@drawable/ic_setup" 
    android:text="@string/fragment_contacts" /> 

my_layout.xml

Это основная компоновка.

<?xml version="1.0" encoding="utf-8"?> 
<ListView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@android:id/list" 
    android:drawSelectorOnTop="false" 
    android:fastScrollEnabled="false" /> 

Код

Теперь вам нужно раздуть макет заголовка XML в View и установить его в качестве вида заголовка к вашему ListView. Следующий фрагмент может использоваться внутри Activity.onCreate(Bundle):

setContentView(R.layout.my_layout); 

View header = View.inflate(this, R.layout.my_layout, null); 
// where "this" is a context/activity... 

ListView list = (ListView)findViewById(android.R.id.list); 
list.addHeaderView(header, null, false); // header will not be clickable 
// ... whatever else you need to do AFTER you set a header (a bug before KITKAT) ... 
Смежные вопросы