Представление нижнего колонтитула Android ListView, не помещаемое в нижнюю часть экрана

Я уверен, что пропускаю что-то простое для реализования этого, но пробежал каждую известную комбинацию, которую я могу придумать для получения то, что я надеюсь делать работу. Я пытаюсь иметь нижний колонтитул ListView, находятся внизу экрана, когда объекты ListView не заполняют страницу.

Например, у меня есть страница с ListView трех объектов и FooterView (использующий addFooterView ListView), я хочу, чтобы это footerView находилось внизу экрана. Когда ListView содержит достаточно объектов для прокрутки экрана, footerView должен находиться в конце списка (не внизу экрана).

XML, который я пытаюсь использовать, упоминается ниже. Любой и вся справка очень ценятся!

Layout.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@+drawable/background">
<ListView
    android:id="@+id/menu" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:listSelector="@android:color/transparent"
    android:divider="@null">
</ListView></RelativeLayout>

ListViewRow.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
style="@style/Nationwide.menu">
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/nav_item"
    style="@style/Nationwide.menu.row">
    <ImageView 
        android:id="@+id/image_icon"
        style="@style/Nationwide.menu.leftIcon" />
    <TextView 
        android:id="@+id/nav_text" 
        style="@style/Nationwide.menu.text" />
    <ImageView
        android:id="@+id/chevron_symbol"
        style="@style/Nationwide.menu.rightIcon" />
</LinearLayout>
<View
    android:layout_height="1dp"
    android:background="@drawable/nav_item_divider_dark" />
<View
    android:layout_height="1dp"
    android:background="@drawable/nav_item_divider_light" /></LinearLayout>

ListViewFooter.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true">
<View 
    android:id="@+id/footer_image"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentBottom="true" /></RelativeLayout>

Java

    LayoutInflater inflater = this.getLayoutInflater();
    View footerView = inflater.inflate(R.layout.footer, null);

    footerView.findViewById(R.id.footer_image).setBackgroundDrawable(resources.getDrawable(R.drawable.cone_footer));

    mMenuListView.addFooterView(footerView);

Вещи, которые я попробовал до сих пор, включают:

  • Добавление нижнего колонтитула просматривает как показанный выше
  • Добавление drawable ресурса как фон на ListView (Это заставило ListView не охватывать всю ширину экрана и прокручивать нечетным способом из-за поддающихся растягиванию регионов С 9 патчами),
  • Добавление cone_footer как отдельное представление в Расположении

Заранее спасибо!

15
задан George Walters II 22 June 2010 в 13:22
поделиться

3 ответа

На тот случай, если другие ищут аналогичный ответ, вот что я сделал, чтобы решить возникшую у меня проблему. Поскольку «Нижний колонтитул», который я хотел добавить, был просто изображением, заполняющим некоторое пространство на экране (для случаев, когда представления были короткими), а подход ListView на самом деле был не тем, что мне нужно для моей реализации, мы закончили с этим как наш XML-макет:

    <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.example.android.apis"
    style="@style/company.mainContainer">

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
        <!-- enter page content here -->

        <View android:layout_height="0px" android:layout_weight="1"
            android:visibility="invisible" />

        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:scaleType="fitXY"
            android:src="@drawable/footer_cone">
        </ImageView>

    </LinearLayout>

</ScrollView>

Надеюсь, это поможет другим!

3
ответ дан 1 December 2019 в 03:24
поделиться

Я хочу, чтобы этот footerView располагался в внизу экрана.

addFooterView () работает не так.

Когда ListView содержит достаточно элементов для прокрутки экрана, footerView должен находиться в конце список (не внизу экран).

addFooterView () тоже не работает.

Если вы хотите, чтобы он прокручивался вместе со списком (например, если три элемента списка занимают верхнюю половину экрана, нижний колонтитул находится прямо под тремя элементами), используйте addFooterView () ... но тогда нижний колонтитул всегда прокручивается вместе со списком.

Если вы хотите, чтобы список не прокручивался, можно использовать RelativeLayout в качестве родительского объекта, привязать нижний колонтитул к нижней части экрана и иметь ListView ] находится между верхним и нижним колонтитулами ... но тогда нижний колонтитул никогда не прокручивается.

16
ответ дан 1 December 2019 в 03:24
поделиться

То, что вы пытаетесь сделать, на самом деле довольно сложно. Вы хотите, чтобы «нижний колонтитул» прокручивался вместе со списком (по крайней мере, иногда), а это значит, что он должен содержаться в макете ListView. Но тогда вы также (в других случаях) хотите, чтобы тот же нижний колонтитул был размещен относительно экрана или, точнее, относительно некоторого родительского макета (или родительского-родительского и т. Д.) ListView, что означает, что нижний колонтитул не должен содержаться в ListView. Эти два сценария требуют взаимоисключающего размещения рассматриваемого элемента.

Однако со стороны SDK это неплохой дизайн. Судя по вашему описанию, вы могли неправильно подумать о проблеме. Действительно ли этот элемент является нижним колонтитулом, концептуально говоря, если он не всегда находится в конце списка, а иногда полностью внизу экрана? Вы МОЖЕТЕ получить нужный макет, объединив ListViews, ScrollViews, RelativeLayouts и некоторые хитрости android: layout_height. Однако может быть лучше просто применить альтернативный подход к дизайну.

1
ответ дан 1 December 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: