# Grafik Tablerow, Button erstreckt sich in der gesamten Breite trotz Beschrenkung durch (max)width



## kuzdu (29. Jun 2014)

Hallo Leute,

ich möchte mein Layout wie folgt gestalten: 






Es sieht allerdings so aus:





Das Problem ist, dass die Buttons dynamisch per Programmierung erzeugt werden und im Laufe der Zeit immer noch welche dazukommen können.
Je nach dem wie groß das Display des Handys ist, stehen auch nicht 2 Buttons nebeneinander, sondern 3 oder 4.

Ich habe einmal ein TableLayout in meiner .xml:
[XML]
                <TableLayout
                    android:id="@+id/tableForButtons"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >                  
                </TableLayout>
[/XML]


Der Javacode enthält eigentlich noch eine Logik, womit die TableRow entsprechend gefüllt wird, je nach Anzahl der Buttons und je nach Größe des Displays. Das habe jetzt mal rausgelassen, da es ja unwichtig ist. 

Hier sind auf jeden Fall alle Attribute, die ich den Buttons und dem TableRow gebe. 

```
TableRow tableRow = new TableRow(this);
			tableRow.setLayoutParams(new TableLayout.LayoutParams(
					 TableRow.LayoutParams.WRAP_CONTENT,
					 TableLayout.LayoutParams.WRAP_CONTENT, 0.5f));

			table.addView(tableRow);

			
			final Button btn = new Button(this);
			btn.setLayoutParams(new TableRow.LayoutParams(
			         TableRow.LayoutParams.WRAP_CONTENT,
				 TableRow.LayoutParams.MATCH_PARENT, 0.5f));

                        //width wurde vorher anhand des Displays berechnet und in width, height genauso
			 	 btn.getLayoutParams().width = width;
				 btn.getLayoutParams().height = height;
				 btn.setMaxWidth(width);
				 btn.setMaxHeight(height);
					
				 btn.setId(countButton);

                                        
                       //Button bekommt Hintergrundbild
                       btn.setBackgroundResource(R.drawable.menubutton);
					
                       //Button bekommt Kategorienamen zugewiesen
	               btn.setText("\n \n \n \n" + categoryName + "\n");

					
			btn.setPadding(0, 0, 0, 0);

					
			tableRow.addView(btn);
								
			}
		}
```

Ich weiß gerade irgendwie echt nicht weiter. Was muss ich den Buttons, dem TableRow oder dem TableLayout für Attribute geben, damit es so aussieht wie gewünscht und es nicht so zerrissen wird? Ich habe auch zwischen WRAP_CONTENT und MATCH_PARENT herumprobiert, aber irgendwie wollte es nicht so recht.

Würde mich total über Hilfe freuen. 

Gruß


----------



## dzim (1. Jul 2014)

Mir fiele spontan nur ein Fake ein: Einen leeren View daneben setzen... Oder eine kleinen Layout anlegen und inflaten, das zwei Buttons enthält und die Buttons bei nicht-Bedarf auf #setVisibility(View#INVISIBLE) setzen...


----------



## kuzdu (2. Jul 2014)

Hey,
habe deinen Rat befolgt, fülle allerdings einfach mit unsichtbaren, deaktivierten Buttons auf. 

Falls das mal für jmd. relevant sein sollte, das sieht dann so ähnlich aus: 


```
// Schleife anhand von Filler einbauen
						for (int i = 0; i < filler; i++) {

							final Button btnInvisible = new Button(this);
							btnInvisible
									.setLayoutParams(new TableRow.LayoutParams(
											TableRow.LayoutParams.MATCH_PARENT,
											TableRow.LayoutParams.WRAP_CONTENT,
											0.5f));

							btnInvisible.setId(countButton);
							btnInvisible.setVisibility(View.INVISIBLE);
							btnInvisible.setEnabled(false);
							btnInvisible.setPadding(0, 0, 0, 0);

							tableRow.addView(btnInvisible);
						}
```


----------

