我使用的是 Jetpack Compose 1.1.0-alpha05 版本,我想知道是否有办法关闭LazyColumnxml ( android:overScrollMode="never") 之类的滚动效果?
android android-overscoll android-jetpack-compose lazycolumn
Android的新Overscroll功能在Gingerbread中引入并发现了一些更有趣的东西.使视图滚动超出其限制然后反弹(几乎完全像iOS)的功能有点内置到框架中,但只是隐藏.
http://www.youtube.com/watch?v=dOyWCDhlxv8&feature=player_embedded
我试图添加一些视觉指示,在ViewPager中没有更多页面在所需的方向上.但是我很难找到一个地方,在哪里放置相关的代码.
我尝试使用以下代码扩展ViewPager类,但Toast未显示(ev.getOrientation()始终返回0).我也尝试了历史点,但ev.getHistorySize()也返回0.
我错过了什么?
类示例:
public class CustomViewPager extends ViewPager {
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* @see android.support.v4.view.ViewPager#onTouchEvent(android.view.MotionEvent)
*/
@Override
public boolean onTouchEvent(MotionEvent ev) {
boolean result = super.onTouchEvent(ev);
switch (ev.getAction() & MotionEventCompat.ACTION_MASK) {
case MotionEvent.ACTION_MOVE:
if (ev.getOrientation() > 0) {
Toast.makeText(getContext(), "left", 0).show();
}
}
return result;
}
}
Run Code Online (Sandbox Code Playgroud) android android-compatibility android-overscoll android-viewpager
我正在考虑在我的项目中添加过度滚动(而不是颜色变化),但即使在阅读了API文档和这里的几个问题后,我仍然不明白我需要做些什么才能使它工作.
根据OverScroller的API文档:" 这个类封装了滚动,能够超越滚动操作的范围.在大多数情况下,这个类是Scroller的直接替代品. "
我之前在父类中有一个Scroller对象:
public boolean onTouchEvent(MotionEvent ev) {
....// code to calculate deltas
if (deltaY != 0 || deltaX != 0)
scrollBy(deltaX, deltaY);
}
Run Code Online (Sandbox Code Playgroud)
然后我去改变它:
if (deltaY != 0 || deltaX != 0)
overScrollBy(deltaX, deltaY, getScrollX(), getScrollY(),
child.getRight() - getWidth(), child.getBottom() - getHeight(),
OVERSCROLL_DISTANCE, OVERSCROLL_DISTANCE, false);
Run Code Online (Sandbox Code Playgroud)
现在滚动根本不起作用!fling()作为一个替代滴,但不滚动....
总之,我有两个问题:
overScrollBy?我是否必须添加其他代码才能使其正常工作?mScroller.fling(),只overScrollBy()?为什么不mScroller.overScrollBy()呢?它是否以某种方式构建在View课堂上?这可能是非常明显的,但我在这里挣扎.任何帮助将非常感谢,谢谢!
似乎三星禁止他们的过度滚动(可能是由于苹果套装).
我有一个扩展ScrollView和覆盖的视图的实现
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY,int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent)
{
...
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, 0, metrics.widthPixels,isTouchEvent);
}
Run Code Online (Sandbox Code Playgroud)
在每个其他设备(姜饼和当然)上,overScrollBy当滚动器到达它结束时被调用,并且用户实际上可以过度滚动视图).
在Android 2.3.5+上,三星实施了一种完全禁用过度滚动的机制(不仅仅是他们的过度滚动实现,还包括Android的实现),每次用户尝试过度滚动时,都会打印以下LogCat事件:
02-13 16:02:34.230: D/BounceScrollRunnableDefault(15783): run(), TimeFraction=0.5225, mBounceExtent=7.273352
Run Code Online (Sandbox Code Playgroud)
有没有办法解锁三星在那里做的事情?或者也许是另一种创建过度滚动的方法?
android galaxy android-2.3-gingerbread android-scrollview android-overscoll
我有一个水平ScrollView,显示了许多项目.我想只在用户向右滚动时显示一个额外的项目.
然后,当用户向左滚动时,该额外项目应该消失.视图通常应仅在第一个项目中滚动,并且仅在显式执行过度滚动时才应显示额外项目.
我无法弄清楚如何做到这一点.有人可以提供有关如何实现此行为的指示.
谢谢Sunny.
我在谷歌和stackoverflow上搜索了一段时间,但我找不到解决方案.是否有任何可能性让Android 2.2或2.1上的listview过度滚动就像感觉ui那样?!就像在我的报警视图中一样:AlarmView Sense UI
从文档中,ScrollView.setOverScrollMode()在版本9的API中可用
我可以在API版本7和8中使用什么作为替换?
我正在尝试使用很好的拉动刷新功能制作一个列表,但是当我在SwipeRefreshLayout中有一个RecyclerView时,过滚动效果仅在刷新时才有效.即使是列表的底部.会发生什么是用户没有列表已结束的视觉提示.
这是我的XML:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_vew"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
Run Code Online (Sandbox Code Playgroud)
片段中的类:
public class MyListFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
private SwipeRefreshLayout swipeRefreshLayout;
private RecyclerView recyclerView;
static final String[] lines = new String[]{
"this is line #1",
"this is line #2"
"this is line #3"
"this is line #4"
"this is line #5"
"this is line #6"
"this is line #7"
};
@Override
public void onRefresh() {
Log.i("QUESTION_LIST_REFRESH", "onRefresh called from SwipeRefreshLayout");
new Handler().postDelayed(new Runnable() {
@Override public void …Run Code Online (Sandbox Code Playgroud) android android-overscoll swiperefreshlayout android-recyclerview
根据Android 文档,overScrollMode的默认值为OVER_SCROLL_ALWAYS。
但是我的ListView似乎没有遵循这种行为。仅当有足够的内容在列表中滚动时,它才会显示过度滚动行为。
我尝试查看Android代码,发现View.java ref中的overScrollMode设置为OVER_SCROLL_IF_CONTENT_SCROLLS
我还检查了ListView和AbsListView的代码,以检查是否在任何地方都设置了overscrollmode,但是我什么也找不到。设置overScrollMode的唯一位置是在View.java中。
这是否意味着与此有关的Android文档不正确?我是否必须在列表视图中将overScrollMode显式设置为“ always”?