我有一个 listview ,其中有多行,其长度可能超过智能手机屏幕的大小。我想确定用户知道他必须继续向下滚动以查看列表中的所有条目。
所以我想到的第一件事就是在屏幕底部显示模糊和发光的箭头(或者只是为了制作 listview的底部发光)直到用户开始向下滚动。如何显示箭头并设置其行为?
感谢。
答案 0 :(得分:3)
您可以在视图底部显示ImageView
。如果需要,可以将其设置为模糊绘图。
将其添加到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);
}
}
});
答案 1 :(得分:1)
另外,要决定是否显示按钮,您可以在列表视图上设置滚动侦听器,然后调用 list.canScrollVertically(-1)。如果返回值为true,则可以显示按钮。如果为false,则表示用户无需滚动即可查看所有内容,无需显示按钮。
答案 2 :(得分: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);
}
});