android - Programmatic layout issue with incorrect height -
i'm trying create own toasts, , doing creating layout programmatically , setting layout toast's view layout.
this works absolutely fine of code, i've run quite specific issue can't seem fix.
i'm trying add image toast, , display image below or above text.
works 100% correctly when adding image above text. shown in first image below:
http://i58.tinypic.com/zn2ag3.png
but when try add image bottom, hell breaks loose , end this:
http://i59.tinypic.com/vdnyoj.png
here's code:
private void showtoast() { //variables context context = getactivity(); int imagegravity = gravity.bottom; charsequence text = "test"; //create parent layout relativelayout relativelayout = new relativelayout(context); relativelayout.layoutparams rellayoutparams = new relativelayout.layoutparams(relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content); relativelayout.setlayoutparams(rellayoutparams); //set background color relativelayout.setbackgroundcolor(0xfff44336); //set padding int padding = 10; relativelayout.setpadding(padding, padding, padding, padding); //initialize image imageview imageview = new imageview(context); int imageviewid = 0x100; imageview.setid(imageviewid); imageview.setadjustviewbounds(true); imageview.setimageresource(r.drawable.default_person_image); relativelayout.layoutparams imageviewparams = new relativelayout.layoutparams(relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content); int margin = 30; if(imagegravity == gravity.top) { imageviewparams.addrule(relativelayout.align_parent_top, relativelayout.true); imageviewparams.addrule(relativelayout.center_horizontal, relativelayout.true); imageviewparams.setmargins(0, 0, 0, margin); } else if(imagegravity == gravity.bottom) { imageviewparams.addrule(relativelayout.align_parent_bottom, relativelayout.true); imageviewparams.addrule(relativelayout.center_horizontal, relativelayout.true); imageviewparams.setmargins(0, margin, 0, 0); } relativelayout.addview(imageview, imageviewparams); //initialize textview textview textview = new textview(context); int textviewid = 0x101; textview.setid(textviewid); textview.settext(text); textview.settextcolor(context.getresources().getcolor(android.r.color.white)); relativelayout.layoutparams textviewparams = new relativelayout.layoutparams(relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content); if(imagegravity == gravity.top) { textviewparams.addrule(relativelayout.below, imageviewid); } else if(imagegravity == gravity.bottom) { textviewparams.addrule(relativelayout.above, imageviewid); } relativelayout.addview(textview, textviewparams); //setup toast toast toast = new toast(context); toast.setview(relativelayout); toast.show(); }
i'm hoping here can spot wrong code, i've been unable find issue myself.
Comments
Post a Comment