PROBLEM DESCRIPTION IMAGE. THIS IS WHAT IS DESIRED (CLICK ON THE IMAGE LINK)
我从API获取数据并制作Android新闻应用。每个页面都有X个新闻文章。让我们说每页10篇文章。所以我使用ListView和ArrayAdapter来显示第1页上的所有文章。我想在listView下面的第10篇文章中说“更多”或类似的内容,它会加载包含下一篇10篇文章的下一页。现在我正在使用UI,而按钮没有显示在listView下面。
我尝试了这些方案:
Layout_alignparentBotton:使用layout_alignParentBottom按钮停留在parentBottom,但列表是可滚动的,并且在按钮固定但是列表可滚动时位于按钮下方。预期成果
layout_below:我尝试了layout_below并给出了列表视图的id。然后按钮根本不显示。我不知道为什么。我想知道这是可能的解决方案,但我想我做错了。
这是我的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
<Button
android:id="@+id/moreButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/list"
android:text="More" />
</RelativeLayout>
这就是使listView有用的原因(List的单个项目的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="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/customListViewID"
android:background="@drawable/background_shape_adapter"
android:orientation="horizontal">
<ImageView
android:id="@+id/newsThumbnailImage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:scaleType="centerCrop" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:orientation="vertical"
android:paddingStart="10dp"
android:paddingTop="10dp">
<TextView
android:id="@+id/titleNewsTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="3"
android:text="Title Of News"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Small"
android:textColor="#000" />
<TextView
android:id="@+id/newsSnippetTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="2"
android:text="Content Snippet"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Small.Inverse"
android:textColor="@color/black_overlay" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:1)
使用带有alignParentBottom的按钮并将其设置为不可见,当列表视图到达结尾时,显示它。
private int preLast;
// Initialization stuff.
yourListView.setOnScrollListener(this);
// ... ... ...
@Override
public void onScroll(AbsListView lw, final int firstVisibleItem,
final int visibleItemCount, final int totalItemCount)
{
switch(lw.getId())
{
case R.id.your_list_id:
// Make your calculation stuff here. You have all your
// needed info from the parameters of this function.
// Sample calculation to determine if the last
// item is fully visible.
final int lastItem = firstVisibleItem + visibleItemCount;
if(lastItem == totalItemCount)
{
if(preLast!=lastItem)
{
bottomButton.setVisibility(View.VISIBLE);
preLast = lastItem;
}
}
}
}
答案 1 :(得分:0)
尝试使用垂直方向的LinearLayout而不是RelativeLayout(在第一个XML文件中)。