问题
I have a RecyclerView
wrapped in a LinearLayout
and it works perfectly as expected. I can see all the data in the RecyclerView
as populated. So far so good.
When I wrap the LinearLayout
in a ScrollView
, the RecyclerView
goes blank. I do not see anything inside RecyclerView
. Why? How to make this work.
The page is one of the tabs in a ViewPagerIndicator
, so everything in that tab needs to be in a ScrollView
.
Thanks for all the help.
回答1:
Set this property for the ScrollView,
android:fillViewport="true"
ScrollView will extend itself to fill the contents
回答2:
After checking implementation, the reason appears to be the following. If RecyclerView
gets put into a ScrollView
, then during measure step its height is unspecified (because ScrollView
allows any height) and, as a result, gets equal to minimum height (as per implementation) which is apparently zero.
You have couple of options for fixing this:
- Set a certain height to
RecyclerView
- Set
ScrollView.fillViewport
totrue
- Or keep
RecyclerView
outside ofScrollView
. I my opinion, this is the best option by far. IfRecyclerView
height is not limited - which is the case when it's put intoScrollView
- then all Adapter's views have enough place vertically and get created all at once. There is no view recycling anymore which kinda breaks the purpose ofRecyclerView
.
回答3:
Nothing helped me except this:
mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
int action = e.getAction();
switch (action) {
case MotionEvent.ACTION_MOVE:
rv.getParent().requestDisallowInterceptTouchEvent(true);
break;
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});
I got this answer there. Thank you Piyush Gupta for that.
回答4:
Hope this helps :
Add this line to your recyclerView xml :
android:nestedScrollingEnabled="false"
Try it ,recyclerview will be smoothly scrolled with flexible height inside scrollview .
来源:https://stackoverflow.com/questions/25515904/android-recyclerview-inside-a-scrollview