我有一个GridView项目,我从Web API获取。我希望在到达gridview结束时出现“加载更多”按钮。它正常工作,直到我点击按钮。该按钮应该在不留空间的情况下消失,但实际上它离开了空间。
当我到达GridView的末尾时,我得到了这个。 当我点击加载更多按钮时,它会消失,这是好的,但留下空间。 下面是我的代码:
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
Log.v("TestInstallationTaskLst", "onScroll");
int lastItem = firstVisibleItem + visibleItemCount;
if(lastItem==totalItemCount && totalItemCount!=0)
{
loadMoreButton.setVisibility(View.VISIBLE);
}
else
{
loadMoreButton.setVisibility(View.GONE);
}
}
@Override
public void onClick(View view)
{
if (view == loadMoreButton)
{
int offset = assets.size()+1;
new DownloadTask().execute(searchText, offset, LIMIT);
loadMoreButton.setVisibility(View.GONE);
}
}
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Main Content View (Must be first child in the DrawerLayout -->
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dark_grey_color">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:indeterminate="true"
android:layout_gravity="center_vertical" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<SearchView android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:queryHint="Search vehicle"/>
<GridView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_centerHorizontal="true"
android:verticalSpacing="10dp"
android:horizontalSpacing="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:numColumns="2">
</GridView>
<Button
android:id="@+id/load_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Load more"/>
</LinearLayout>
</FrameLayout>
<!-- Navigation Drawer -->
<ExpandableListView
android:id="@+id/gps_menu_drawer"
android:layout_width="@dimen/navigation_bar_width"
android:layout_height="match_parent"
android:layout_gravity="start"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="@color/gps_dark_grey"/>
答案 0 :(得分:1)
尝试使用RelativeLayout
已编辑:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Main Content View (Must be first child in the DrawerLayout -->
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:indeterminate="true"
android:layout_centerInParent="true"/>
<SearchView
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:clickable="true"
android:queryHint="Search vehicle"/>
<GridView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/searchView"
android:layout_centerHorizontal="true"
android:verticalSpacing="10dp"
android:horizontalSpacing="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:numColumns="2">
</GridView>
<Button
android:id="@+id/load_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Load more"/>
</RelativeLayout>
</FrameLayout>
答案 1 :(得分:0)
这可能是因为您为layout_height
元素错误地设置了LinearLayout
。
试试这个:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<SearchView android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:queryHint="Search vehicle"/>
<GridView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_centerHorizontal="true"
android:verticalSpacing="10dp"
android:horizontalSpacing="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:numColumns="2">
</GridView>
<Button
android:id="@+id/load_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Load more"/>
</LinearLayout>
如果您使用layout_weight
设置元素的高度 - 请使用layout_height="0dp"
和 NOT layout_height="match_parent"
。此外,您的searchView's
高度也设置为match_parent
。