我已经在很多网站上检查了这个概念,并想在我的应用中制作它。这个想法很简单,有一个静态背景,例如颜色作为应用程序中的背景,当滚动在末尾时,它会在底部显示一些树。
这就像将第二个背景放在Scrollview的底部。我试图只放置一个背景,但它显示在应用程序的底部,而不是Scrollview中。
有没有办法做到这一点?因为我已经搜索过,并没有找到任何可靠的来源。
答案 0 :(得分:1)
如果我理解正确,您可以使用此XML布局实现所需内容(或以编程方式构建相同的结构)。
你只需要将一个带有你的drawable的ImageView作为" src"位于NestedScrollView内部ViewGroup的底部(因为ScrollViews只能有一个子节点)。你会得到一个ScrollView,里面有一个ViewGroup,你的内容后跟你的图像。
当用户滚动到内容下方的底部时,图像将从底部显示。在下面的代码中,我向您展示了XML,您可以在其中设置应用程序的背景,滚动视图的底部以及放置内容的位置。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/app_background">
<!-- YOU CAN SET YOUR APP BACKGROUND COLOR OR DRAWABLE UP HERE -->
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- YOUR CONTENT GOES HERE -->
<TextView android:text="Your content here instead of this TextView"
android:layout_width="match_parent"
android:layout_height="1500dp" />
<!-- YOUR FOOTER IMAGE HERE -->
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/trees" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
如果您希望底部的图像显示在ScrollView内容后面而不是下面,则需要删除上面的XML中的ImageView ,而不是将背景可绘制设置为NestedScrollView内的LinearLayout,并使用以下XML资源drawable作为背景:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/trees"
android:gravity="bottom|center_horizontal" />
此XML将创建一个新的drawable,当设置为背景时,该drawable与视图的底部对齐。只需将该代码保存在drawable文件夹中名为trees_background.xml的xml文件中,并将LinearLayout更改为
android:background="@drawable/trees_background.xml"
答案 1 :(得分:0)
如果我理解正确,那么实现所需行为的最简单方法是在回收商的适配器中添加额外的ViewType
,并将此项添加到商品列表的末尾。它将作为Recycler View的页脚,因此当用户滚动到底部时,他们将看到您的树或任何东西。
答案 2 :(得分:0)
您可以通过以下方式检测您是否已经到达NestedScrollView的底部,然后可以应用您自己的逻辑来相应地更改背景。
NestedScrollView nestedScrollView = (NestedScrollView) findViewById(R.id.nestedScrollView);
nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (scrollY < oldScrollY) {
// Scroll UP
} else if (scrollY > oldScrollY) {
//Scroll down
} else if (scrollY == 0) {
// TOP SCROLL
} else if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {
//You have reached the bottom of nested scrollview
//Add you logic here to change background
}
}
});
希望我能帮到你。