2010-01-09 17 views
29

Miałem wiele problemów z ScrollViews. Ostatnio próbowałem utworzyć LinearView, którego zawartość przekracza rozmiar ekranu, więc utworzyłem nowy układ z elementem nadrzędnym ScrollView i ustawiłem jego szerokość i wysokość na niestandardowe wartości (układ musi pojawić się jako okno dialogowe - nie wypełniając całego ekranu).Android: ScrollView Issue

Po wybraniu elementu pojawia się czerwone obramowanie, które obejmuje prostokąt z predefiniowanymi liniami ScrollView LayoutWidth i LayoutHeight, który jest prawidłowy. Następnie umieściłem w LinearView i ustawić wartości LayoutWidth i LayoutHeight na fill_parent.

Następnie, gdy zacząłem dodawać elementy do LinearLayout, granica (czerwona żółta) zawijała wstawione elementy, a nie cały nadrzędny ScrollView.

Kiedy zawartość LinearLayout (child of ScrollView) przekroczyła rozmiar elementu nadrzędnego ScrollView, scroll nie pojawił się, a dolne elementy są po prostu niewidoczne.

W każdym razie .. w tym przypadku zawartość XML była zbyt obszerna, aby opublikować pytanie tutaj i teraz mam ten sam problem z prostszym przykładem.

Następująca część układu ma być przewijanym EditText (w przypadku, gdy użytkownik wprowadzi więcej niż podstawowy rozmiar widżetu). Chciałem ustawić wysokość EditText na 120px, więc ustawiłem nadrzędną wysokość ScrollView na 120px, a podrzędny EditText na fill_parent. Również w tym przypadku EditText nie wypełnia całego obszaru Scrollview tylko jeden wiersz:

<ScrollView android:layout_height="120px" android:layout_width="fill_parent"> 
<EditText android:id="@+id/txtContent" android:layout_height="fill_parent" android:layout_width="fill_parent" android:text="TestContent"> 
</EditText> 
</ScrollView> 

Czy ktoś wie jak do przekształcenia zawartości powyżej więc EditText wypełnia sterowania nadrzędnego, aw przypadku wejścia użytkownika przekracza rozmiar kontrolny pojawia się przewijanie?

Dziękujemy!

Edit:

Poniżej screeny z układem

usuwa martwy ImageShack Link
usuwa martwy ImageShack Link

Odpowiedz

95

Twój EditText powinny mieć wysokość wrap_content. fill_parent nie ma znaczenia w ScrollView. Jeśli chcesz, aby EditText wypełniał swoją ScrollView, gdy jej zawartość jest mniejsza niż ScrollView, użyj android:fillViewport="true" na ScrollView.

+0

Ale z '' ScrollView' mający android: fillViewport = "true" 'stworzyć dziwny problem dla mnie. W fragmencie znajduje się przewijany widok, a wewnątrz jest układ tabeli z dynamicznie tworzonymi wierszami tabeli w czasie wykonywania. Po tym, jeśli baner reklamowy zostanie załadowany, a zrobię go widoczny, to z powodu przesunięcia rozmiaru fragmentu moje wiersze tabeli podrzędnych znikną. Nie dzieje się tak, jeśli ustawię fillViewPort na false! –

9

Tak, jak powiedział Romain, scrollview wymaga następującego połączenia.

  1. dla Scrollview android:fillViewport="true"
  2. dla dziecka Scrollview android:layout_height="wrap_content"
+1

Tak. Były okazje, w których zachowywałem się dziwnie, kiedy ustawiłem go na fill_parent. –

+0

Zrobiłem to samo, ale potem nie mogę przewijać? czy możesz mi pomóc, próbując zrozumieć, co może być problemem? –

Powiązane problemy