2014-12-12 13 views
5

Po pierwsze, przepraszam za tytuł. Myślałem długo i ciężko, by wybrać bardziej opisowy tytuł, ale tak naprawdę nie mogłem go znaleźć.Który układ powinien być użyty do pokazania "stopki" w zależności od reszty zawartości ekranu

Mam ekran z nagłówkiem (zmienna długość - za pomocą przesuwanego paska akcji), środkową częścią (widok przewijania) i dolną częścią do wyświetlania reklam (stała długość). Jestem w stanie napisać ekranu przy użyciu RelativeLayout ale co ja naprawdę chciałbym zrobić to w ten sposób:

  • Jeśli Zawartość Scrollview użytkownika (środkowa część) nie jest wystarczająco długi, aby wypełnić cały ekran (w tym nagłówku), chciałbym lubię wyświetlać reklamę u dołu ekranu.
  • Jeśli treść + nagłówek przewijania jest dłuższy niż ekran, chciałbym wyświetlić reklamę PONIŻEJ zawartości przewijanego widoku, co oznacza, że ​​nie jest widoczna, chyba że użytkownik przewinie do dołu fragmentu.

Wyobraź sobie treść widoku przewijania jako krótki tekst lub obraz + długi tekst. W pierwszym przypadku treść przewijania będzie krótka i dlatego najlepiej będzie wyświetlać reklamę u dołu ekranu, ponieważ mam wystarczająco dużo miejsca, ale jeśli jest to obraz + tekst, będzie większy niż wysokość ekranu i jako taki , Chcę wyświetlić reklamę po przewinięciu użytkownika na dół.

Powodem, dla którego chcę to zrobić, jest to, że reklama nie musi zajmować miejsca, jeśli na ekranie znajduje się przydatna zawartość (doświadczenie użytkownika).

Czy jest tak, aby osiągnąć to w Androidzie bez pisania własnego układu? Jeśli tak, jaki widok poleciłbyś?

Dziękujemy wcześniej,

+1

możliwy duplikat [Widok wewnątrz Scrollview nie bierze wszystkie miejsca] (http://stackoverflow.com/questions/10211338/view-inside-scrollview-doesnt-take -all-place) – corsair992

+0

@ corsair992 Dziękuję. Tego właśnie szukałem. Nie wiem, czy można to uznać za odpowiedź, ponieważ jest to duplikat, ale jeśli możesz, zrób to, abym mógł przyjąć twoją odpowiedź i dać ci nagrodę :). Jeszcze raz bardzo dziękuję. W przeciwnym razie nigdy bym tego nie znalazł. – kha

+1

Oznaczę to jako moderator do zamknięcia jako duplikat i zwrócę nagrodę (tylko moderatorzy mogą zamknąć pytania o nagrodę), ale nikt jeszcze do tego nie doszedł. Nie jestem zainteresowany kolekcjonowaniem nagród, ale jeśli chcesz, możesz opublikować odpowiedź automatyczną i zaakceptować ją. – corsair992

Odpowiedz

1

Nie sądzę, że istnieje taki układ. Możesz to zrobić programowo. ScrollView zawsze ma jeden dziecko, dzięki czemu można uzyskać wysokość zawartość sposób:

int contentHeight = scrollView.getChildAt(0).getHeight(); 

można uzyskać wysokość okna w ten sposób

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int windowHeight = size.y; 

Wysokość nagłówka i stopki jest stały, dzięki czemu można matematyka decyduje, gdzie umieścić stopkę.

int totalHeight = heaederHeight + contentHeight + footerHeight 
if(totalHeight < windowHeight) { 
    // add the footer to the scrollview 
} else { 
    // add the footer below the scrollview 
} 

Wady tego podejścia polega na tym, że wszystkie magię należy wykonywać ręcznie.

Mam nadzieję, że pomógł Ci :)

+0

Dziękuję Kiril za szybką odpowiedź. Pozwól mi sprawdzić rozwiązanie i wrócić do Ciebie. – kha

+2

W rzeczywistości atrybut 'fillViewport' został zaprojektowany właśnie w tym celu. Zobacz na blogu Romain Guy: http: // www.curious-creature.com/2010/08/15/scrollviews-handy-trick – corsair992

Powiązane problemy