Android: populating Linear Layout programmatically, It gets extra space -


i'm trying populate linearlayout horizontally imageviews programmatically. in horizontal directon, works well, reserves space vertically don't want.

here xml:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context="es.uam.dadm.jacopo_grassi_connecta4.settings" >  <textview     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="@string/your_color" />  <linearlayout     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:orientation="horizontal"     android:id="@+id/your_color_container" >  </linearlayout>  <textview     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="@string/adv_color" />  <linearlayout     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:orientation="horizontal"     android:id="@+id/adv_color_container" >  </linearlayout>  <relativelayout     android:layout_width="match_parent"     android:layout_height="wrap_content" >      <textview         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="@string/sounds" />      <switch         android:id="@+id/sounds_switch"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_alignparentright="true" /> </relativelayout> 

and here's java code:

private playerdatasource playersdb; private player player;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_settings);      bundle extras = getintent().getextras();     playersdb = new playerdatasource(this);     player = playersdb.getplayer(extras.getstring(utils.param_player_id));      buildcolors();      switch sounds = (switch)findviewbyid(r.id.sounds_switch);     sounds.setoncheckedchangelistener(this);     sounds.setchecked(player.getsounds() == 0 ? false : true); }  @override public void onclick(view v) {     integer tag = (integer) v.gettag(r.id.tag_adv);     if(tag == null){        //your color         tag = (integer) v.gettag(r.id.tag_you);         player.setcolor(tag);     }else{                  //adv color         player.setcoloradv(tag);     }     playersdb.updateplayer(player);     buildcolors(); }  @override public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) {     if(ischecked){         player.setsounds(1);     }else{         player.setsounds(0);     }     playersdb.updateplayer(player); }  private void buildcolors(){     linearlayout parent = (linearlayout)findviewbyid(r.id.your_color_container);     parent.removeallviewsinlayout();      (int = 0; < 5; ++i) {         linearlayout.layoutparams params = new layoutparams(layoutparams.wrap_content, layoutparams.wrap_content);         params.weight = 0.2f;         imageview v = new imageview(this);         integer drawable = null;         switch (i){         case 0:             drawable = r.drawable.red_piece;             break;         case 1:             drawable = r.drawable.yellow_piece;             break;         case 2:             drawable = r.drawable.green_piece;             break;         case 3:             drawable = r.drawable.purple_piece;             break;         case 4:             drawable = r.drawable.azure_piece;             break;         }         v.setlayoutparams(params);         v.setimageresource(drawable);         v.settag(r.id.tag_you, drawable);         v.setonclicklistener(this);          if (drawable.equals(player.getcolor())) {             v.setbackgroundcolor(getresources().getcolor(r.color.azul));         }          parent.addview(v);     }      parent = (linearlayout)findviewbyid(r.id.adv_color_container);     parent.removeallviewsinlayout();      (int = 0; < 5; ++i) {         linearlayout.layoutparams params = new layoutparams(layoutparams.wrap_content, layoutparams.wrap_content);         params.weight = 0.2f;         imageview v = new imageview(this);         integer drawable = null;         switch (i){         case 0:             drawable = r.drawable.red_piece;             break;         case 1:             drawable = r.drawable.yellow_piece;             break;         case 2:             drawable = r.drawable.green_piece;             break;         case 3:             drawable = r.drawable.purple_piece;             break;         case 4:             drawable = r.drawable.azure_piece;             break;         }         v.setlayoutparams(params);         v.setimageresource(drawable);         v.settag(r.id.tag_adv, drawable);         v.setonclicklistener(this);          if (drawable.equals(player.getcoloradv())) {             v.setbackgroundcolor(getresources().getcolor(r.color.azul));         }          parent.addview(v);     } } 

and that's result:

result

obviously, images perfect squares.

what doing wrong?

does work if change android:layout_height of outer linearlayout "wrap_content"?


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -