View.GONE无法正常工作

时间:2015-10-29 08:21:47

标签: android xml

我有一个GridView项目,我从Web API获取。我希望在到达gridview结束时出现“加载更多”按钮。它正常工作,直到我点击按钮。该按钮应该在不留空间的情况下消失,但实际上它离开了空间。

当我到达GridView的末尾时,我得到了这个。 enter image description here 当我点击加载更多按钮时,它会消失,这是好的,但留下空间。 下面是我的代码: enter image description here

 @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"/>

2 个答案:

答案 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