Używam TableLayout w systemie Android. W tej chwili mam jeden TableRow z dwoma elementami, a poniżej TableRow z jednym elementem. Renderuje tak:
-----------------------------
| Cell 1 | Cell 2 |
-----------------------------
| Cell 3 |
---------------
Chcę, aby Cell 3 rozciągnął się w obu górnych komórkach, więc wygląda to tak:
-----------------------------
| Cell 1 | Cell 2 |
-----------------------------
| Cell 3 |
-----------------------------
W HTML użyłbym COLSPAN… jak to zrobić w Androidzie?
android
android-layout
android-tablelayout
Spike Williams
źródło
źródło
Odpowiedzi:
Wygląda na to, że istnieje atrybut, który to robi: layout_span
UPDATE: ten atrybut należy zastosować do elementów podrzędnych TableRow. NIE do samego TableRow.
źródło
Aby uzupełnić odpowiedź, atrybut layout_span należy dodać do elementu podrzędnego, a nie do TableRow.
Ten fragment kodu pokazuje trzeci wiersz mojego tableLayout, który obejmuje dwie kolumny.
<TableLayout> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_span="2" android:text="@string/create" /> </TableRow> </TableLayout>
źródło
I tak robisz to programowo
//theChild in this case is the child of TableRow TableRow.LayoutParams params = (TableRow.LayoutParams) theChild.getLayoutParams(); params.span = 2; //amount of columns you will span theChild.setLayoutParams(params);
źródło
child
tym przypadku może to być wszystko, a nie tylko widok tekstu, jak sugerowała Twoja edycja. DziękiMusisz użyć layout_weight, aby wypełnić cały wiersz, w przeciwnym razie nadal wypełnia lewą lub prawą kolumnę układu tabeli.
<TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_span="2" android:layout_weight="1" android:text="ClickMe" /> </TableRow>
źródło
Może to komuś pomoże. Wypróbowałem rozwiązanie,
layout_span
ale to nie działa. Więc rozwiązałem problem tą sztuczką. Po prostu użyjLinearLayout
w miejscu, wTableRow
którym potrzebujesz colspana, to wszystko.źródło
użyj android: layout_span w elemencie potomnym elementu TableRow
źródło
Miałem problem z rowspanami, w przypadku TableRow, Textview i tak dalej, generowanych za pomocą kodu. Nawet jeśli odpowiedź Onimush wydaje się być dobra, nie działa z wygenerowanym interfejsem użytkownika.
Oto fragment kodu, który ... nie działa:
TableRow the_ligne_unidade = new TableRow(this); the_ligne_unidade.setBackgroundColor(the_grey); TextView my_unidade = new TextView(this); my_unidade.setText(tsap_unidade_nom); my_unidade.setTextSize(20); my_unidade.setTypeface(null, Typeface.BOLD); my_unidade.setVisibility(View.VISIBLE); TableRow.LayoutParams the_param; the_param = (TableRow.LayoutParams)my_unidade.getLayoutParams(); the_param.span = 3; my_unidade.setLayoutParams(the_param); // Put the TextView in the TableRow the_ligne_unidade.addView(my_unidade);
Kod wydaje się być w porządku, ale kiedy dojdziesz do init "the_params", zwraca NULL.
Z drugiej strony ten kod działa jak urok:
TableRow the_ligne_unidade = new TableRow(this); the_ligne_unidade.setBackgroundColor(the_grey); TextView my_unidade = new TextView(this); my_unidade.setText(tsap_unidade_nom); my_unidade.setTextSize(20); my_unidade.setTypeface(null, Typeface.BOLD); my_unidade.setVisibility(View.VISIBLE); // Put the TextView in the TableRow the_ligne_unidade.addView(my_unidade); // And now, we change the SPAN TableRow.LayoutParams the_param; the_param = (TableRow.LayoutParams)my_unidade.getLayoutParams(); the_param.span = 3; my_unidade.setLayoutParams(the_param);
Jedyną różnicą jest to, że przed ustawieniem zakresu umieszczam Textview wewnątrz TableRow. I w tym przypadku to działa. Mam nadzieję, że to komuś pomoże!
źródło
Myślę, że musisz owinąć układ wokół innego. Miej jedną listę układów pionowo, wewnątrz inną (lub w tym przypadku dwie) listę poziomą.
Wciąż trudno mi ładnie podzielić interfejs na 50-50 części w Androidzie.
źródło