Android在AbsListview上隐藏隐藏视图

时间:2014-03-25 18:31:53

标签: android listview android-viewpager relativelayout

我有一个加权布局,其顶部有一个相对布局,ViewPager,后面跟一个LinearLayout和另一个包含List的GridLayout(GridView for Tablet和ListView for Mobile)。我想要做的是在用户滚动列表时平滑地隐藏顶部ViewPager相对布局。我目前有代码在滚动时突然隐藏顶视图。以下是按当前代码。

移动设备的XML(除了ListView是GridView之外,平板电脑布局是相同的):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" 
android:weightSum="1"
android:orientation="vertical">

<RelativeLayout
    android:id="@+id/liveHome"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight=".60" 
    android:background="@color/black">

    <com.custom.model.LivePagerContainer
        android:id="@+id/container"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"   
        android:layout_gravity="center_horizontal|center_vertical">

       <android.support.v4.view.ViewPager
        android:id="@+id/livePager"
        android:layout_width="300dip"
        android:layout_height="wrap_content"     
        android:layout_gravity="center_horizontal|center_vertical" />
   </com.custom.model.LivePagerContainer>        

</RelativeLayout>

  <LinearLayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="horizontal"
   android:background="@color/light_gray"
   android:dividerHeight="1dp">

   <ImageView
       android:layout_width="34dp"
       android:layout_height="34dp"
       android:contentDescription="@string/image"
       android:cropToPadding="true"
       android:maxHeight="24dp"
       android:padding="5dp"
       android:scaleType="fitXY"
       android:src="@drawable/image" />

   <TextView
       android:id="@+id/titleBar"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:padding="5dp"
       android:text="@string/string"
       android:textColor="@color/black"
       android:textSize="16sp"
       android:layout_gravity="center_vertical" />
</LinearLayout>    
   <LinearLayout
    android:id="@+id/bottom"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:layout_weight=".40">
      <ListView
             android:id="@+id/ListView"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:divider="@color/light_gray"
             android:dividerHeight="1dp" >
         </ListView>    
</LinearLayout>

隐藏/动画的当前代码:

private AbsListView listView;

....
listView.setOnScrollListener(new OnScrollListener(){

@Override
public void onScrollStateChanged(AbsListView view,
        int scrollState) {
    // TODO Auto-generated method stub

}

@Override
public void onScroll(AbsListView view,
        int firstVisibleItem, int visibleItemCount,
        int totalItemCount) {
    RelativeLayout live = (RelativeLayout) getView().findViewById(R.id.liveHome);
    if(firstVisibleItem >2)
    {
        TranslateAnimation animate = new TranslateAnimation(0,0,0,-live.getHeight());
        animate.setDuration(500);
        animate.setFillAfter(true);
        live.startAnimation(animate);
        live.setVisibility(View.GONE);
    }
    else
    {
        live.setVisibility(View.VISIBLE);
    }

}                       
});

问题是当前代码(使用setVisibility()隐藏&#34; liveHome&#34;相对布局正确)是非常突然的。当我滚动列表视图时,我想让它平滑地滑出屏幕。我也试过添加动画。 onScroll&#34;中的动画代码移动&#34;屏幕上的内容,但我的顶部留空空间(直到setVisibility(View.GONE)突然使空格消失)。

我有办法顺利隐藏RelativeLayout吗?任何帮助将不胜感激。

注意:我在我的代码中使用AbsListView,因为我根据我的设备(手机与平板电脑)动态使用ListView或Gridview,因此我无法使用ListView的addHeaderView。

0 个答案:

没有答案