【发布时间】:2018-09-11 15:32:37
【问题描述】:
我在RecyclerView 上向上滚动时显示一个转到顶部按钮。如果用户向上滚动,则会显示该按钮。
这是嵌套在RelativeLayout 中的xml 代码。
<android.support.v7.widget.RecyclerView
android:id="@+id/userFeedsRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn_goto_top"
android:layout_width="30dp"
android:layout_height="30dp"
android:text="@string/icon_up_arrow"
android:layout_alignParentBottom="true"
android:layout_marginBottom="20dp"
android:visibility="gone"
android:textSize="10sp"
android:layout_centerHorizontal="true"
android:background="@drawable/round_button"/>
这里是java代码
btnGotoTop = (Button) findViewById(R.id.btn_goto_top);
Const.setTypeFace(btnGotoTop, getApplication());
btnGotoTop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
userFeedsRecyclerView.smoothScrollToPosition(0);
view.setVisibility(View.GONE);
}
});
userFeedsRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if(dy < 0){
btnGotoTop.setVisibility(View.VISIBLE);
}
else{
btnGotoTop.setVisibility(View.GONE);
}
}
});
在btnGotoTop 的onClick() 方法中,RecyclerView 正确滚动到顶部,但按钮没有消失。
我尝试将view.setVisibility(View.GONE) 更改为btnGotoTop.setVisibility(View.GONE),但即使在滚动完成后仍会显示该按钮。
【问题讨论】:
-
从 XML 中删除可见性并重试
-
@AkshayRohilla 试过了。没用。
标签: android android-recyclerview visibility android-button