我已经尝试了一个小时左右来检测我的scrollView何时到达屏幕的底部.由于各种屏幕尺寸和Android没有涉及的内容,我不能简单地说当它的Y位置达到某个值时它位于底部,但是没有方法可以检测到它在底部是否找到了.
我确信这有一个简单的解决方案,通过其他变量或其他东西减去视图的高度,但由于某种原因它只是没有点击我.任何想法将不胜感激,谢谢.
我有一个自定义ScrollView(扩展android.widget.ScrollView),我在我的布局中使用.我想测量此scrollview内容的总高度.getHeight()和getMeasuredHeight()不会给我正确的值(数字太高).
背景信息:我想确定用户滚动了多远.我使用onScrollChanged来获取X值,但我需要知道一个百分比,所以我需要总滚动条高度.
非常感谢!埃里克
我只是想在底部检测滚动nestedscrollview android的位置,以及调用函数.我的代码是:
scroll.getViewTreeObserver()
.addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
int totalHeight = scroll.getChildAt(0).getHeight();
int scrollY = scroll.getScrollY();
Log.v("position", "totalHeight=" + totalHeight + "scrollY=" + scrollY);
if (scrollY==totalHeight) {
getPlaylistFromServer("more");
}
}
});
Run Code Online (Sandbox Code Playgroud)
但总高度与MAX ScrollY不同.怎么解决?
我在滚动视图中的文本视图中有一个固定的内容.当用户滚动到某个位置时,我想开始一个活动或触发一个Toast.
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:id="@+id/scroller">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent" android:id="@+id/story"
android:layout_height="wrap_content" android:text="@string/lorem"
android:gravity="fill" />
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
我的问题是实现受保护的方法onScrollChanged来找出滚动视图的位置.
我找到了这个答案,是否有一个更简单的解决方案,而不是声明一个界面,覆盖滚动视图等,如我发布的链接上所示?
我正在寻找一个事件,当用户滚动到底部时,我可以在scrollView上使用该事件.
例如,我的项目列表应该自动扩展更多项目.
有什么想法可以做到这一点?
我很感谢任何提示.
我的本机应用程序,如果用户滚动到webview的末尾,我想显示/隐藏按钮.我在这里查看了一个答案,并了解了如何通过接口注册回调.我的主要问题是我无法在onScrollChanged方法中进行计算.我尝试过getHeight(),getContentHeight(),top等组合,但它似乎太早了.我尝试使用像谷歌这样的简单页面,内容相对较少,也有新闻页面.
这些逻辑适用于普通滚动视图.由于网页内容很多,可能会搞乱计算.粘贴示例代码:不起作用.
@Override
protected void onScrollChanged(int left, int top, int oldLeft, int oldTop) {
if ( mOnWebViewBottomReachedListener != null ) {
//if ( (getContentHeight() - (top + getHeight())) <= mMinDistance )
int diff = (getBottom() - (getHeight() + getScrollY()));
Log.e("values ", diff+" o");
if ((int) Math.floor(getContentHeight() * getScaleY()) == top)
mOnWebViewBottomReachedListener.onBottomReached(this);
}
super.onScrollChanged(left, top, oldLeft, oldTop);
}
Run Code Online (Sandbox Code Playgroud)
需要帮助.谢谢.
我正在使用recyclerview并在我的布局上有一个FAB.我希望能够在最后一项的底部留出一些空间,就像Gmail应用程序那样,当您滚动到底部时,底部项目上的右手星仍然可以点击.
我尝试在底部添加一些填充,实现了这一点,但滚动条不会一直滚动到底部,停在填充高度,而Gmail版本.有谁知道怎么做?
<RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="90dp"
android:scrollbars="vertical" />
Run Code Online (Sandbox Code Playgroud) 我有listview女巫包含40项,我想写滚动监听器方法.我的意思是当滚动位置将是最后项目位置(第40项)我将显示Toast消息.我写了一些代码.我可以在最后一个项目位置显示Toast消息,但是当我再次向上滚动时我可以显示Toast消息这是我的来源
list.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (list.getLastVisiblePosition() == totalItemCount - 1
) {
Toast.makeText(getActivity(), "Last", Toast.LENGTH_SHORT)
.show();
try {
} catch (Exception e) {
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
我怎么能改变代码才能显示最后一个项目位置的吐司消息?谢谢
我已经尝试过全面搜索,但我似乎无法想出这个.基本上,我有一个Scrollview的布局和里面的元素.我想在滚动视图中放置一个按钮,它位于末尾/底部,只有当你一直滚动到底部时才能看到它.我试过这样做:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/topcontainer">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar_review"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:title="Review Your Massage">
</android.support.v7.widget.Toolbar>
<include layout="@layout/card_review"/>
</LinearLayout>
<Button
android:id="@+id/buttonReview"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:background="@color/colorAccent"
android:text="@string/book"
android:layout_below="@+id/topcontainer"
/>
</RelativeLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
按钮确实位于底部,但下方有空间.如果我在分辨率更高的手机上运行应用程序,按钮将几乎位于屏幕中间.我怎么能这样做,无论它的分辨率如何始终保持在最低点?