Tworzę interfejs użytkownika aplikacji. Potrzebuję układu wygląda następująco:
(<i> to przyciski). Problem polega na tym, że nie wiem, jak upewnić się, że TextView zapełni pozostałe miejsce, a dwa przyciski mają stały rozmiar.
Jeśli użyję funkcji fill_parent dla widoku tekstu, drugi przycisk (>) nie będzie widoczny.
Jak mogę stworzyć układ, który wygląda jak obraz?
android
layout
android-layout
Luke Vo
źródło
źródło
Odpowiedzi:
Odpowiedź od woodshy działała dla mnie i jest prostsza niż odpowiedź Ungureanu Liviu, ponieważ nie używa
RelativeLayout
. Dla jasności podaję mój układ:źródło
alignLeft
ialignParentLeft
itp., Których nigdy nie można osiągnąćLinearLayout
.W przypadku umieszczenia <WIDOK TEKSTU> w LinearLayout, ustaw właściwość Layout_weight <i> na 0 i 1 dla TextView.
W przypadku RelativeLayout wyrównaj <i> do lewej i prawej i ustaw właściwość „Układ po lewej stronie” i „Układ po prawej” właściwości TextView na identyfikatory <i>
źródło
Jeśli używasz
RelativeLayout
, możesz zrobić coś takiego:źródło
>
przycisku?Za pomocą a
ConstraintLayout
znalazłem coś takiegoPracuje. Kluczem jest odpowiednie ustawienie ograniczeń dla prawej, lewej, górnej i dolnej krawędzi, a następnie ustawienie szerokości i wysokości
0dp
i określenie, jaki ma rozmiar.źródło
TextView
ma to lewe i prawe ograniczenie.TextView
Nie rozciąga się, jeśli pierwszyButton
ma prawo do ograniczeniaTextView
, a ostatniButton
ma ograniczenie do lewejTextView
.To proste Ustawiasz minWidth lub minHeight, w zależności od tego, czego szukasz, poziomo lub pionowo. A dla drugiego obiektu (tego, który chcesz wypełnić pozostałą przestrzeń) ustawiasz wagę 1 (ustaw szerokość, aby zawinąć jego zawartość), więc wypełni resztę obszaru.
źródło
możesz użyć atrybutu high layout_weight. Poniżej możesz zobaczyć układ, w którym ListView zajmuje całe wolne miejsce z przyciskami u dołu:
źródło
Dla tych, którzy mają tę samą usterkę,
<LinearLayout...>
co ja:Ważne jest, aby określić
android:layout_width="fill_parent"
, że nie będzie działaćwrap_content
.OTOH, możesz pominąć
android:layout_weight = "0"
, nie jest to wymagane.Mój kod jest w zasadzie taki sam jak kod w https://stackoverflow.com/a/25781167/755804 (autor: Vivek Pandey)
źródło
Należy unikać zagnieżdżania 2 względnego układu, ponieważ względny układ zawsze wykonuje 2 przejścia do rysowania (wobec 1 dla dowolnego innego typu układu). Staje się wykładniczy po ich zagnieżdżeniu. Powinieneś użyć układu liniowego o szerokości = 0 i wadze = 1 na elemencie, który chcesz wypełnić pozostałą przestrzenią. Ta odpowiedź jest lepsza dla wydajności i praktyk. Pamiętaj: stosuj układ względny TYLKO wtedy, gdy nie masz innego wyboru.
źródło
Można użyć Ustaw
layout_width
lublayout_width
do0dp
(Przy orientacji chcesz wypełnić pozostałą przestrzeń). Następnie użyj,layout_weight
aby wypełnić pozostałe miejsce.źródło
użyj Relativelayout, aby zawinąć LinearLayout
źródło
znalazłem
źródło
Korzystając z układu względnego, możesz rozciągnąć widok, zakotwiczając go w obu widokach, do których ma on się rozciągać. Chociaż określona wysokość zostanie zignorowana, Android nadal wymaga atrybutu wysokości, dlatego napisałem „0dp”. Przykład:
źródło