2016-12-29 91 views
1

我有一個列表視圖多行的長度可能會超過智能手機屏幕的大小。我想確定用戶知道他必須不斷滾動查看列表的所有條目。如何在列表視圖中顯示「向下」提示箭頭?

這樣來到我的腦海裏的第一件事是在屏幕(或只是爲了讓列表視圖煥發的底部),直到用戶開始向下滾動的底部顯示一個模糊和發光的箭頭。如何顯示箭頭並設置其行爲?

感謝。

回答

3

您可以顯示固定在視圖底部的ImageView。如果你願意的話,你可以設置一個模糊的drawable。

添加到您的layout.xml:

<ImageView 
    android:id="@+id/img_arrow" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:layout_alignParentBottom="true" /> 

然後在你的代碼,你檢查的時候,如果最後一個項目已經繪滾動列表。

listView.setOnScrollListener(new AbsListView.OnScrollListener() { 
    @Override 
    public void onScrollStateChanged(AbsListView view, int scrollState) { 

    } 

    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
     if(totalItemCount != listView.getLastVisiblePosition() + 1){ 
      imageView.setVisible(View.GONE); 
     }else{ 
      imageView.setVisible(View.VISIBLE); 
     } 
    } 
}); 
+0

我並不需要一個按鈕,向下滾動! (用戶將滾動,就像listview自動執行一樣。)我只是想在列表視圖上顯示一個「提示」,以確保用戶收到消息「嘿,男士,名單還沒有結束!」 – Robb1

+0

好吧,那麼你將不得不檢查,如果最後一個項目已經繪製。將更新我的回答 –

+0

@ Robb1我更新 –

1

此外,以決定是否顯示您的按鈕,或者不是你可以在列表視圖設置滾動監聽器,然後調用list.canScrollVertically(-1)。如果返回的值是真的,則可以顯示按鈕。如果它是假的,這意味着用戶可以在不滾動的情況下看到所有內容,並且不需要顯示按鈕。

1

試試這個代碼:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
      super.onScrollStateChanged(recyclerView, newState); 
      int position = mLayoutManager.findFirstVisibleItemPosition(); 
      if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { 
       if (position == 0) { 
        imageViewDownArrow.setVisibility(View.VISIBLE); 
       } else { 
        imageViewDownArrow.setVisibility(View.GONE); 
       } 
      } 

     } 

     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 

     } 
    }); 
+1

請記住OP不使用recyclerView,他應該但他正在使用listView –

相關問題