android - Horizontal linearLayout's children out of screen -
i have horizontal linearlayout in framelayout. many textviews add linearlayout dynamically. below xml file:
<linearlayout android:id="@+id/an_item_tags_lay" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginbottom="20dp" android:orientation="horizontal"> </linearlayout> and function add textviews is:
private void createtags(){ arraylist<string> arr_tags = new arraylist<>(); arr_tags.add("#flower"); arr_tags.add("#red"); arr_tags.add("#flower"); arr_tags.add("#red"); arr_tags.add("#flower"); arr_tags.add("#red"); arr_tags.add("#flower"); arr_tags.add("#red"); arr_tags.add("#flower"); arr_tags.add("#red"); arr_tags.add("#flower"); arr_tags.add("#red"); for(int = 0; < arr_tags.size(); i++){ textview tag = new textview(getactivity()); tag.setid(i); tag.settext(arr_tags.get(i)); tag.settextcolor(r.getcolor(r.color.color_an_item_btn_tag_darker_color)); tag.setbackgroundresource(r.drawable.btn_tag_select); tag.setpadding(20, 20, 20, 20); linearlayout.layoutparams params = new linearlayout.layoutparams(linearlayout.layoutparams.wrap_content, linearlayout.layoutparams.wrap_content); params.setmargins(4, 10, 4, 4); tag.setlayoutparams(params); an_item_tags_lay.addview(tag); } } as can see in image, textviews go out of screen. when screen full, other views come next line. property should add linearlayout? there view behavior?
you need add programatically this:
tagviews.removeallviews(); linearlayout ll = new linearlayout(this); ll.setorientation(linearlayout.horizontal); ll.setbackgroundcolor(color.white); ll.setlayoutparams(new linearlayout.layoutparams(linearlayout.layoutparams.match_parent, linearlayout.layoutparams.wrap_content)); linearlayout childview; int remainingwidth, count = tagviews.getchildcount(); if (count <= 0) tagviews.addview(ll); textview tagtext; linearlayout.layoutparams params = new linearlayout.layoutparams(linearlayout.layoutparams.wrap_content, linearlayout.layoutparams.wrap_content); params.setmargins(5, 5, 5, 5); int width = 0; windowmanager w = getwindowmanager(); point size = new point(); if (build.version.sdk_int >= build.version_codes.honeycomb_mr2) { w.getdefaultdisplay().getsize(size); width = size.x; } else { // display d = w.getdefaultdisplay(); // width = d.getwidth(); displaymetrics displaymetrics = new displaymetrics(); getwindowmanager().getdefaultdisplay().getmetrics(displaymetrics); width = displaymetrics.widthpixels; //int screenheight = displaymetrics.heightpixels; } try { (int k = 0; k < arr.length(); k++) { jsonobject obj = arr.getjsonobject(k); myproductscattaghandler model = new myproductscattaghandler(); model.setname(obj.getstring("category_name")); model.setid(obj.getstring("cat_id")); tagmodels.add(model); final string cat_name = obj.getstring("category_name"); final string cat_id = obj.getstring("cat_id"); (int = 0; < tagviews.getchildcount(); i++) { childview = (linearlayout) tagviews.getchildat(i); tagtext = new textview(this); commonutilities.settypeface(this, tagtext, commonutilities.view_type.textview, commonutilities.type_face.callibri, 0); tagtext.settext(cat_name); tagtext.setlayoutparams(params); tagtext.setpadding(10, 5, 10, 5); //tagtext.setbackgroundcolor(color.rgb(0xee, 0xee, 0xee)); tagtext.setbackgroundresource(r.drawable.tags_bg); // count = holder.tagviews.getchildcount(); childview.measure(0, 0); remainingwidth = width - childview.getmeasuredwidth(); //// log.v("subcriptionadapter", "remaining width=" + remainingwidth + " childview width= " + childview.getmeasuredwidth()); try { if (remainingwidth > childview.getmeasuredwidth()) { childview.addview(tagtext); childview.invalidate(); break; } else if ((i == tagviews.getchildcount() - 1) && (remainingwidth < childview.getmeasuredwidth())) { childview = new linearlayout(this); childview.setorientation(linearlayout.horizontal); childview.setlayoutparams(new linearlayout.layoutparams(linearlayout.layoutparams.wrap_content, linearlayout.layoutparams.wrap_content)); childview.addview(tagtext); tagviews.addview(childview); childview.invalidate(); break; } else { continue; } } catch (exception e) { e.printstacktrace(); } } } } catch (exception e) { // todo: handle exception e.printstacktrace(); } tagviews.invalidate(); } 
Comments
Post a Comment