Il layout di Android si concentra in RelativeLayout per ListView personalizzato

Sto davvero tirando i miei capelli su questo. Un certo background. Ho un elenco di elementi che hanno tutti caselle di controllo accanto a loro. Quando si deseleziona una casella di controllo, viene visualizzato un button che consente di eliminare l'elemento dall'elenco. Questo sembra all'inizio, ma vogliamo solo che gli elementi "selezionati" siano idonei per ulteriori elaborazioni, ecc. Questo è il mio layout:

<RelativeLayout android:id="@+id/rlBlahBlah" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" xmlns:android="http://schemas.android.com/apk/res/android"> <CheckBox android:text="" android:id="@+id/cbDeleteItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:focusable="false" /> <TextView android:text="" android:id="@+id/tvItemText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14dip" android:paddingLeft="3dip" android:paddingRight="3dip" android:paddingTop="13dip" android:gravity="fill_vertical" android:layout_toRightOf="@id/cbDeleteItem" /> <Button android:layout_height="wrap_content" android:id="@+id/btnDelete" android:text="Delete" android:layout_width="wrap_content" android:layout_alignParentRight="true" android:gravity="center_vertical" android:focusable="false" /> </RelativeLayout> 

Non riesco a get i 3 elementi per centrare verticalmente nella mia row per salvare la mia vita. layout_gravity , gravity , layout_centerVertical , nessuno funziona. Sono sicuro che il mio problema è un po 'di piccole impostazioni per riavviare da qualche parte, ma sono veramente alla fine wits su questo.

  • Android: errore libGL.so: Imansible aprire file di object condiviso: Nessun file o directory di questo tipo
  • Il modo più semplice per riprodurre un stream audio RTMP in Android
  • Imansible risolvere: com.android.support:appcompat-v7:15.+
  • Debug di codice Android CGI / C ++ in Eclipse - i punti di interruzione non vengono colpiti
  • Come codificare la condivisione tra Android e iOS
  • SSL Proxy / Charles e problemi di Android
  • edit: so che la visualizzazione di text è "fill_vertical", che è una roba random che stavo provando.

  • Popolare Spinner dynamicmente in android dal text di modifica
  • Come si crea una schermata demo trasparente per un'applicazione Android?
  • Imposta dimensione della telecamera - Parametri vs intenti?
  • Lista di visualizzazione Android con spinner e una casella di controllo
  • Associa servizio all'attività in Android
  • lettura android da un file di text
  • 6 Solutions collect form web for “Il layout di Android si concentra in RelativeLayout per ListView personalizzato”

    Il tuo problema probabilmente non è dovuto al layout, ma come stai gonfiando il layout. Infatti, potrebbe anche essere colpa mia, a seconda di where hai imparato la tua tecnica …

    Per citare l'onnipresente Romain Guy :

    l'uso corretto di gonfiare () negli adattatori è:

    gonfiare (layoutId, genitore, falso);

    Passare il genitore (dato come parametro in getView ()) consente all'utilità tool UI di creare l'object LayoutParams appropriato. Passare false indica che il toolkit non call parent.addView (theInflateChild), poiché ListView farà la propria magia in seguito.

    Se si utilizza inflate(layoutId, null) , come ho tradizionalmente consigliato, la vita è OK a less che non si tenti di utilizzare RelativeLayout come il layout di base delle righe e cercare di utilizzare il centraggio verticale.

    Aggiornerò i miei libri e rispeccherò il nuovo consiglio nelle prossime settimane.

    Questo attributo mi ha lavorato per centrare un Button utilizzando RelativeLayout :

     android:layout_centerInParent="true" 

    Vedi questo post: Puoi centrare un button in RelativeLayout?

    Usando RelativeLayout, non ho avuto fortuna con gravità né gravità di layout.

    Ma android:layout_centerVertical="true" lavorato per me posizionato nel figlio del mio RelativeLayout, in modo da poterlo mantenerla se ti serve.

    Ecco un layout che finì per fare esattamente quello che volevo. Ho distriggersto RelativeLayout una volta che ho scoperto che ignora layout_gravity attributi layout_gravity (naturalmente ora non posso trovare il post). In entrambi i casi, LinearLayouts nidificato ha fatto il trucco per me:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:id="@+id/llBlahBlahRowMain" android:padding="6dip"> <CheckBox android:text="" android:id="@+id/cbDeleteItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:focusable="false" /> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_weight="1" android:layout_gravity="center_vertical" android:layout_height="wrap_content"> <TextView android:text="blah blah dynamically replaced text" android:id="@+id/tvItemText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:textSize="14dip" android:paddingLeft="3dip" android:layout_gravity="center_vertical" /> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btnDelete" android:text="Delete" android:layout_gravity="center_vertical" android:focusable="false" /> </LinearLayout> 

    Hai provato android: gravity = "center_horizontal" come indicato qui

    Ho fatto una soluzione alternativa, che ha funzionato per me. Ho messo, sul mio elemento textbox, la properties; android: layout_height = "fill_parent". In questo modo, l'elemento di text ha riempito tutti i nomi di genitore, quindi i contenuti sono stati allineati correttamente 🙂

     <TextView android:id="@+id/principal_li_descricao" android:layout_height="fill_parent" android:layout_width="wrap_content" android:layout_marginLeft="10dip" android:textColor="#ff000000" android:layout_centerVertical="true" android:gravity="center_vertical" android:layout_alignBottom="@+id/principal_li_icone" android:layout_toRightOf="@+id/principal_li_icone"/> 

    Grazie

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.