Android ListView с фиксированным верхним и нижним колонтитулом
Как создать ListView
с фиксированным верхним и нижним колонтитулом?
Я не хочу, чтобы верхний/нижний колонтитул прокручивался с элементами в ListView
.
Возможно ли, что верхний/нижний колонтитул плавает над ListView
, так что верхний/нижний колонтитул не должен иметь прямой нижний/верхний фон, а элементы ListView
прокручиваются ниже фона в виде заголовка/нижнего колонтитула, но все же отобразить первый элемент списка?
Ответы
Ответ 1
Я решил его с помощью предложения @blackbelt и небольшого ImageView, при этом исходное изображение было прозрачным с плиткой.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<ListView
android:id="@+id/lv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_above="@+id/tv_footer"
android:layout_below="@+id/tv_header" />
<TextView
android:id="@+id/tv_footer"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@drawable/footer_bg"
android:gravity="center"
android:text="Footer" />
<TextView
android:id="@+id/tv_header"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="@drawable/header_bg"
android:gravity="center"
android:orientation="vertical"
android:text="Header" />
<ImageView
android:id="@+id/iconView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/ic_launcher" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignTop="@+id/lv"
android:background="@drawable/header_bg2"
android:src="@drawable/transparant_bg_tile" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/tv_footer"
android:layout_alignParentRight="true"
android:background="@drawable/footer_bg2"
android:src="@drawable/transparant_bg_tile" />
</RelativeLayout>
Снимок экрана с устройства
![enter image description here]()
Ответ 2
http://developer.android.com/reference/android/widget/ListView.html#addHeaderView%28android.view.View%29. Проверьте это для addHeaderView (param).
http://developer.android.com/reference/android/widget/ListView.html#addFooterView%28android.view.View%29. Проверьте это для addFooterView (param).
Пример метода использования путем вставки макета @Android listview с кнопками заголовка и нижнего колонтитула
Вы можете использовать addHeaderView и addFooterView для добавления заголовка и нижнего колонтитула.
Вы можете сделать то, что предложил @blackbelt. Я использовал относительный макет вместо LinearLayout.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<ListView
android:id="@+id/lv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_above="@+id/textView1"
android:layout_below="@+id/tv1" />
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:gravity="center"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:text="Footer" />
<TextView
android:id="@+id/tv1"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:gravity="center"
android:layout_alignParentTop="true"
android:orientation="vertical"
android:layout_centerHorizontal="true"
android:text="Header" />
</RelativeLayout>
Захват графической компоновки
![enter image description here]()
Ответ 3
Используйте LinearLayout
, добавьте свой заголовок на ListView
и нижний колонтитул выше. Дает ListView layout_weight="1"
Ответ 4
Сделайте верхний и нижний колонтитулы отдельными видами, которые вы находите сверху и снизу ListView. Затем установите непрозрачность для этих представлений.
Ответ 5
создайте свой пользовательский верхний и нижний колонтитулы со своим кодом представления списка ниже
файл header.xml
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="your custom height" // you may set default too
/>
</RelativeLayout>
файл footer.xml
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
добавить, где ваш список
LayoutInflater inflaterHeader = getLayoutInflater();
ViewGroup header = (ViewGroup) inflaterFooter.inflate(
R.layout.header, list_view, false);
yourListView.addHeaderView(header);
LayoutInflater inflaterFooter = getLayoutInflater();
ViewGroup footer = (ViewGroup) inflaterFooter.inflate(
R.layout.footer, list_view, false);
yourListView.addFooterView(footer);
Ответ 6
мы также можем установить верхний и нижний колонтитулы таким образом, я устанавливаю компоновку заголовка над списком и так же, как мы можем нижний колонтитул ниже listview
<LinearLayout
android:id="@+id/ly_header"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/app_theme_color"
android:orientation="horizontal">
<include layout="@layout/header_icuc"/>
</LinearLayout>
<ListView
android:id="@+id/lv_contacts"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/ly_header"
android:background="#F3F4F6"
android:divider="@drawable/contact_list_divider"
android:dividerHeight="2dp"
android:scrollbars="none" />
Ответ 7
Создайте собственный пользовательский вид, используя LinearLayout и ListView