W mojej aplikacji mam widok przewijania. Podczas życia mojej aplikacji dynamicznie dodawam nowe widoki do przewijanego widoku. Mogę dodawać widoki z niewielkim problemem, jednak nie mogę uzyskać właściwych wymiarów. Oto szkic mojego pożądanym układzie:Jak napompować rozwijany widok o stałym współczynniku kształtu
W obrazie Mam ekran o wymiarach Width
przez Height
. Zawiera on HorizontalScrollView
(lub może RecyclerView
, ale nie jestem pewien, jak używać tego), który będzie rósł, gdy zostaną do niego dodane widoki. Chcę, aby każdy element dodawany do widoku miał szerokość równą jednej piątej wysokości ekranu i miał odpowiednie wysokości. Mogę sprawić, żeby to działało, gdybym zakodował szerokość nadmuchanego widoku, ale mój widok nie będzie miał takiego samego współczynnika proporcji na wszystkich telefonach.
Uwaga: Próbowałem używać PercentRelativeLayout, ale nie mogłem go uruchomić. Nie wiesz, jak rozwiązać ten problem ... jakieś pomysły?
Uwaga na Bounty: będę akceptować odpowiedzi, które są w języku Java lub C# (Xamarin) !! Mój projekt jest w Xamarinie, więc byłoby miło, gdyby to działało, lub gdyby można go było łatwo zaadaptować do pracy w C#
To naprawdę zależy od tego, czy rozmiary są dynamiczne lub stałe. Jeśli są naprawione, możesz zakodować wymiary w układzie i użyć tylko różnych nadpisań dpi, aby zmienić rozmiary wymiarów. Jeśli chcesz, aby rozmiary były dynamiczne, to też mogę na to odpowiedzieć, ale zobacz, czy możesz nim zarządzać, najpierw z układem xml i wymiarami. Sugerowałbym również, aby przyjrzeć się użyciu RecylerView. To trochę, aby owinąć głowę, ale oferuje dużo większą elastyczność i kontrolę. W ten sposób można to zrobić w poziomie: http://stackoverflow.com/a/28460399/1740059 –
@JustinMitchell stosunek będzie stały, najlepiej zdefiniowany w xml jako procent. Próbowałem utworzyć niestandardowy widok, który nadpisuje rozmiar, ale nie mogłem go uruchomić bez zniekształcania rozmiaru jego widoków podrzędnych. – flakes
Nie używaj procentów, używaj stałych wartości dp. Jednak nadal można zmienić rozmiar widoku w metodzie onCreateView. Upewnij się, że utworzysz obserwatora, który nasłuchuje zmian drzewa widoku, abyś mógł uzyskać prawdziwe wymiary widoku, w przeciwnym razie wymiary zostaną wyłączone. –