2010-03-26 7 views

Odpowiedz

16

To wydaje się być błąd w samym systemie Android, patrz http://code.google.com/p/android/issues/detail?id=1394.

pracowałem wokół niego przez owinięcie moich RelativeLayout w FrameLayout i oddanie moich dolną wyrównany pogląd jako dzieci z FrameLayout z android:layout_gravity="bottom". Utrudnia to odnoszenie się do niego z poziomu RelativeLayout, więc będziesz musiał to obejść (na przykład używając marginesów).

Jeśli ktoś ma lepsze obejście, proszę udostępnij.

+0

Miałem ten sam problem i wydaje mi się, że to z powodu tego błędu. Naprawiono go w Froyo, ale nie w Eclair. – simao

+0

Oto obejście tego właśnie opublikowane http://code.google.com/p/android/issues/detail?id=1394#c16 – Vadim

3

Po nadmuchaniu układu użyj inflate(R.layout.whatever, parent, false), gdzie parent to ListView. Jeśli tego nie zrobisz (np. Przekażesz rodzicowi null), RelativeLayout staje się dziwny w wierszach listy.

+0

Nadal nie mogę zmusić go do pracy. Używam CursorAdapter i w newView() Mam teraz: Zobacz v = inflater.inflate (ROW_RESOURCE, postList, false); – alexanderblom

+0

Oto projekt z jednej z moich książek, która używa "RelativeLayouts" w wierszach: http://github.com/commonsguy/cw-advandroid/tree/master/Introspection/Launchalot/ - sprawdź, czy to daje jakieś wskazówki, gdzie sprawy mogą się nie udać. – CommonsWare

+0

Wygląda na to: http://code.google.com/p/android/issues/detail?id=1394. Nie ustalono na 1.6. Ustawienie stałej wysokości nie jest tak naprawdę opcją, ponieważ wysokość musi być zmienna. Jakieś dobre rozwiązania? Czy jestem zmuszony do tworzenia może mieć własny układ, C – alexanderblom

0

udało mi się uzyskać właściwe dopasowanie poprzez określenie problematycznego TextView z:

android:id="@+id/must_be_bottom_left" 
android:layout_alignParentRight="true" 
android:layout_alignParentBottom="true" 
android:layout_below="@id/xxx" 

gdzie xxx był id z TextView który ma android:layout_below="@id/yyy"

i yyy jest TextView że jest zawsze powyżej zarówno xxx i must_be_bottom_left.

Zawartość moich pozycji na liście może się różnić, więc czasami "xxx" TextView to View.GONE, ale nawet wtedy układ działa zgodnie z oczekiwaniami.

Nie wiem, jak krucha lub po prostu nieredukowalna jest ta praca. Używam Androida 1.6 i nie przetestowałem go pod kątem zgodności z wcześniejszymi wersjami.

0

My Hack do tego Andriod bug:

ViewGroup.LayoutParams lp=(ViewGroup.LayoutParams)view.getLayoutParams(); 
lp.height=view.getContentHeight();//hack for android bug about ViewGroup.LayoutParams.WRAP_CONTENT and android:layout_alignParentBottom="true" on landscape orientation 
view.requestLayout(); 
act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
Powiązane problemy