I am having a listview
inside a scrollview
, but the problem is that the scrollview
is scrolling but listview
is not scrol
ListView must have fixed height as below in your XML file
<ListView android:id="@+id/lv"
android:listSelector="#0f0"
android:layout_width="fill_parent"
android:layout_height="500px" />
In Java file, write below code after setContentView()
lv = (ListView)findViewById(R.id.lv);
lv.setAdapter(your adapter here); // you have to add your adapter here
lv.setOnTouchListener(new ListView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE)
{
lv.scrollBy(0, 1);
}
return false;
}
});
Make these changes to your code and test it. After too many experiments i written this code. It is working 100% fine.
If you put your ListView/any scrollable View inside the scrollView it will not work properly because when you touch the screen ,main focus of your touch is on parent view(scrollView ) not the child View (ListView).
Generally, you cannot put scrollable things inside other scrollable things, where they scroll in the same direction, and have the results be reliable. Occasionally this works (e.g., WebViews
in a ViewPager
), but that is the exception, not the norm.
Either:
Move the ListView
out of the ScrollView
, or
Move all the rest of the contents of the ScrollView
into the ListView
, whether using things like addHeaderView()
or my MergeAdapter