Android : Adding custom view to child of ScrollView -
i having problem scrollview when try add custom view child(relativelayout) of scrollview. it works correctly when remove scrollview.
here's xml file
<scrollview android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:id="@+id/scrollview"> <relativelayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/relativelayout" android:layout_alignparentleft="true" android:layout_alignparentstart="true" android:layout_alignright="@+id/relativelayout" android:layout_alignend="@+id/relativelayout" android:id="@+id/rlselectable"> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view1" android:background="@drawable/drawable_border" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view2" android:background="@drawable/drawable_border" android:layout_below="@+id/view1" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view3" android:background="@drawable/drawable_border" android:layout_below="@+id/view2" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view4" android:background="@drawable/drawable_border" android:layout_below="@+id/view3" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view5" android:background="@drawable/drawable_border" android:layout_below="@+id/view4" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view6" android:background="@drawable/drawable_border" android:layout_below="@+id/view5" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view7" android:background="@drawable/drawable_border" android:layout_below="@+id/view6" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view8" android:background="@drawable/drawable_border" android:layout_below="@+id/view7" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view9" android:background="@drawable/drawable_border" android:layout_below="@+id/view8" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view10" android:background="@drawable/drawable_border" android:layout_below="@+id/view9" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view11" android:background="@drawable/drawable_border" android:layout_below="@+id/view10" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view12" android:background="@drawable/drawable_border" android:layout_below="@+id/view11" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view13" android:background="@drawable/drawable_border" android:layout_below="@+id/view12" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view14" android:background="@drawable/drawable_border" android:layout_below="@+id/view13" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view15" android:background="@drawable/drawable_border" android:layout_below="@+id/view14" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view16" android:background="@drawable/drawable_border" android:layout_below="@+id/view6" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> </relativelayout> </scrollview>
note: scrollview not parent in xml layout. it's wrapped in relativelayout.
here's mainactivity code :
public class mainactivity extends appcompatactivity implements dragger.draggerinterface { gesturedetector detector; arraylist<dragger> draggers; relativelayout rlselectable; int width,height,count=0,startsat=0; float centerx; scrollview scrollview; string tag = "main_dragger"; view view; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.calendar_view); view = findviewbyid(r.id.view1); rlselectable = (relativelayout) findviewbyid(r.id.rlselectable); draggers = new arraylist<dragger>(); scrollview = (scrollview)findviewbyid(r.id.scrollview); scrollview.requestdisallowintercepttouchevent(true); detector = new gesturedetector(new gesturedetector.simpleongesturelistener(){ @override public boolean ondown(motionevent e) { return true; } @override public boolean onsingletapconfirmed(motionevent e) { int index = motioneventcompat.getactionindex(e); float x = motioneventcompat.getx(e, index); float y = motioneventcompat.gety(e, index); adddragger(centerx,y); log("single tapped"); return true; } }); rlselectable.setontouchlistener(new view.ontouchlistener() { @override public boolean ontouch(view v, motionevent event) { return detector.ontouchevent(event); } }); } @override public void onwindowfocuschanged(boolean hasfocus) { super.onwindowfocuschanged(hasfocus); width = rlselectable.getwidth(); centerx = (rlselectable.getright()-rlselectable.getleft())/2; height = view.getheight(); startsat = view.gettop(); } public void adddragger(float x,float y) { dragger dragger = new dragger(mainactivity.this); dragger.setparams(width,height); dragger.setcenter(x, y); draggers.add(dragger); dragger.setid(count++); dragger.viewstartsat(startsat); dragger.addview(this); rlselectable.addview(dragger); } private void log(string message){ log.d(tag,message); } @override public void checkbounds(dragger current) { int currentid = current.getid(); if(draggers.size()>1){ for(dragger dragger : draggers){ if(currentid !=dragger.getid()){ if(current.getupstate() && current.getrecttop()<dragger.getrectbootom() && current.getrectbootom() > dragger.getrecttop()){ dragger.setbottom(current.getrectbootom()); current.removeview(); draggers.remove(current); break; }else if(!current.getupstate() && current.getrectbootom() > dragger.getrecttop() && current.getrecttop() < dragger.getrectbootom()){ dragger.settop(current.getrecttop()); current.removeview(); draggers.remove(current); break; } } } } }
<?xml version="1.0" encoding="utf-8"?> <framelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/frame_container"> <include android:id="@+id/app_bar_id" layout="@layout/app_bar"></include> <linearlayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/fragment_container_id"> </linearlayout> <scrollview android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:id="@+id/scrollview"> <linearlayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <relativelayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/relativelayout" android:layout_alignparentleft="true" android:layout_alignparentstart="true" android:layout_alignright="@+id/relativelayout" android:layout_alignend="@+id/relativelayout" android:id="@+id/rlselectable"> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view1" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view2" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view1" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view3" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view2" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view4" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view3" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view5" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view4" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view6" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view5" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view7" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view6" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view8" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view7" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view9" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view8" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view10" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view9" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view11" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view10" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view12" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view11" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view13" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view12" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view14" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view13" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view15" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view14" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> <view android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/view16" android:background="@drawable/edit_text_bottom_corner_curved" android:layout_below="@+id/view6" android:layout_alignparentleft="true" android:layout_alignparentstart="true"/> </relativelayout> </linearlayout> </scrollview> </framelayout>
Comments
Post a Comment