linxin6560 / detailscrollview Goto Github PK
View Code? Open in Web Editor NEW高仿今日头条新闻详情页面
高仿今日头条新闻详情页面
从ListView往上滑动的时候到Webview的时候会卡主,WebView内容不满一屏幕会留下一大片空白
mScrollView.scrollToListView();
mScrollView.toggleScrollToListView();
刚好项目有需求! 感谢分享!
list没有数据的时候,list所在的位置会留有一个屏幕大小的空白
下滑的时候会webview的滑动惯性会传递到listview,但是listview上滑的关系没办法传递给webview,能不能支持
是因为WebView没有自动适应网页的高度的原因吗
<DetailWebView
android:id="@+id/article_web"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<DetailRecyclerView
android:id="@+id/reply_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp10"
android:paddingLeft="@dimen/dp14"
android:paddingRight="@dimen/dp14" />
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.ScrollBarDrawable.setAlpha(ScrollBarDrawable.java:221)
at android.view.View.onDrawScrollBars(View.java:11542)
at android.view.View.draw(View.java:13950)
at android.view.View.getDisplayList(View.java:12838)
at android.view.View.getDisplayList(View.java:12880)
at android.view.View.draw(View.java:13657)
at android.view.ViewGroup.drawChild(ViewGroup.java:3086)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923)
at android.view.View.getDisplayList(View.java:12833)
at android.view.View.getDisplayList(View.java:12880)
E/XgStat: java.lang.ClassCastException: android.widget.OverScroller cannot be cast to android.support.v4.widget.ScrollerCompat
Process: com.example.administrator.detailscrollview, PID: 22993 java.lang.ClassCastException: android.widget.OverScroller cannot be cast to android.support.v4.widget.ScrollerCompat at com.levylin.detailscrollview.views.DetailRecyclerView.getCurrVelocity(DetailRecyclerView.java:114) at com.levylin.detailscrollview.views.helper.ListViewTouchHelper.getCurVelocity(ListViewTouchHelper.java:140) at com.levylin.detailscrollview.views.helper.ListViewTouchHelper.onScrollStateChanged(ListViewTouchHelper.java:124) at com.levylin.detailscrollview.views.DetailRecyclerView$1.onScrollStateChanged(DetailRecyclerView.java:52) at android.support.v7.widget.RecyclerView.dispatchOnScrollStateChanged(RecyclerView.java:4759) at android.support.v7.widget.RecyclerView.setScrollState(RecyclerView.java:1434) at android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:4908) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874) at android.view.Choreographer.doCallbacks(Choreographer.java:686) at android.view.Choreographer.doFrame(Choreographer.java:618) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
错误被定位到
DetailRecyclerView$getCurrVelocity
/** * 获取RecyclerView滑动速度 * * @return */ public int getCurrVelocity() { if (scrollerCompat != null) { return (int) scrollerCompat.getCurrVelocity(); } Class clazz = RecyclerView.class; try { Field viewFlingerField = clazz.getDeclaredField("mViewFlinger"); viewFlingerField.setAccessible(true); Object viewFlinger = viewFlingerField.get(this); Field scrollerField = viewFlinger.getClass().getDeclaredField("mScroller"); scrollerField.setAccessible(true); scrollerCompat = (ScrollerCompat) scrollerField.get(viewFlinger); return (int) scrollerCompat.getCurrVelocity(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return 0; }
似乎是反射出现了问题,我也在尝试解决它。
你好,代码写的很好,如果配合相关的博客一起看就太好了
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.