Я уверен, что пропускаю что-то простое для реализования этого, но пробежал каждую известную комбинацию, которую я могу придумать для получения то, что я надеюсь делать работу. Я пытаюсь иметь нижний колонтитул 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);
Вещи, которые я попробовал до сих пор, включают:
Заранее спасибо!
На тот случай, если другие ищут аналогичный ответ, вот что я сделал, чтобы решить возникшую у меня проблему. Поскольку «Нижний колонтитул», который я хотел добавить, был просто изображением, заполняющим некоторое пространство на экране (для случаев, когда представления были короткими), а подход 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>
Надеюсь, это поможет другим!
Я хочу, чтобы этот footerView располагался в внизу экрана.
addFooterView ()
работает не так.
Когда ListView содержит достаточно элементов для прокрутки экрана, footerView должен находиться в конце список (не внизу экран).
addFooterView ()
тоже не работает.
Если вы хотите, чтобы он прокручивался вместе со списком (например, если три элемента списка занимают верхнюю половину экрана, нижний колонтитул находится прямо под тремя элементами), используйте addFooterView ()
... но тогда нижний колонтитул всегда прокручивается вместе со списком.
Если вы хотите, чтобы список не прокручивался, можно использовать RelativeLayout
в качестве родительского объекта, привязать нижний колонтитул к нижней части экрана и иметь ListView
] находится между верхним и нижним колонтитулами ... но тогда нижний колонтитул никогда не прокручивается.
То, что вы пытаетесь сделать, на самом деле довольно сложно. Вы хотите, чтобы «нижний колонтитул» прокручивался вместе со списком (по крайней мере, иногда), а это значит, что он должен содержаться в макете ListView. Но тогда вы также (в других случаях) хотите, чтобы тот же нижний колонтитул был размещен относительно экрана или, точнее, относительно некоторого родительского макета (или родительского-родительского и т. Д.) ListView, что означает, что нижний колонтитул не должен содержаться в ListView. Эти два сценария требуют взаимоисключающего размещения рассматриваемого элемента.
Однако со стороны SDK это неплохой дизайн. Судя по вашему описанию, вы могли неправильно подумать о проблеме. Действительно ли этот элемент является нижним колонтитулом, концептуально говоря, если он не всегда находится в конце списка, а иногда полностью внизу экрана? Вы МОЖЕТЕ получить нужный макет, объединив ListViews, ScrollViews, RelativeLayouts и некоторые хитрости android: layout_height. Однако может быть лучше просто применить альтернативный подход к дизайну.