2010-03-26 11 views

risposta

16

Questo sembra essere un bug in Android stesso, vedere http://code.google.com/p/android/issues/detail?id=1394.

ho lavorato intorno ad esso avvolgendo la mia RelativeLayout in un FrameLayout e mettendo la mia vista inferiore allineato come figli della FrameLayout con android:layout_gravity="bottom". Questo ti impedisce di farne riferimento all'interno dello RelativeLayout, quindi dovrai ovviare a questo (ad esempio usando i margini).

Se qualcuno ha una soluzione migliore, si prega di condividere.

+0

Ho avuto lo stesso problema e sembra essere a causa di quell'errore. È fisso in Froyo ma non in Eclair. – simao

+0

Ecco una soluzione alternativa, ho appena pubblicato http://code.google.com/p/android/issues/detail?id=1394#c16 – Vadim

3

Quando si gonfia il layout, utilizzare inflate(R.layout.whatever, parent, false), dove parent è ListView. Se non lo fai (ad esempio, superi il numero null per il genitore), RelativeLayout diventa strano nelle righe dell'elenco.

+0

Ancora non riesco a farlo funzionare. Sto usando CursorAdapter e in newView() ora ho: Visualizza v = inflater.inflate (ROW_RESOURCE, postList, false); – alexanderblom

+0

Ecco un progetto da uno dei miei libri che utilizza 'RelativeLayouts' nelle righe: http://github.com/commonsguy/cw-advandroid/tree/master/Introspection/Launchalot/ - vedi se questo ti dà qualche indizio su dove le cose potrebbero andare storte per te. – CommonsWare

+0

Sembra questo: http://code.google.com/p/android/issues/detail?id=1394. Non riparato su 1.6. Impostare un'altezza fissa non è un'opzione in quanto l'altezza deve essere variabile. Qualche buona soluzione alternativa? O sono costretto a creare il proprio layout personalizzato: C – alexanderblom

0

sono stato in grado di ottenere il corretto allineamento specificando l'TextView problematico con:

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

dove xxx era l'id di una TextView che ha android:layout_below="@id/yyy"

e yyy è un TextView che è sempre al di sopra entrambi xxx e must_be_bottom_left.

Il contenuto degli elementi della mia lista può variare in modo che a volte "01xxxx" TextView è View.GONE, ma anche in questo caso il layout funziona come previsto.

Non so quanto sia fragile o semplicemente seredipidico questo work-around. Sto usando Android 1.6 e non l'ho testato per compatibilità diretta.

0

mio mod per questo 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); 
Problemi correlati