properties; match_parent per i bambini in un RelativeLayout

In breve, è ansible dire a un bambino in un RelativeLayout di abbinare sempre l'altezza di quella RelativeLayout indipendentemente da come si comportno altri bambini in quella stessa RelativeLayout ? In breve, è così. Dettagli qui sotto.

Quello che sto cercando di realizzare è una row di ListView con alless tre viste e una di quelle viste sarebbe una sorta di una striscia sul lato destro della voce di elenco (la vista rossa di seguito). Il problema che sto avendo è che c'è un TextView sul lato sinistro, e affiancando su quanto text ho, la striscia non riempirà l'integer layout. Ciò è chiaramente spiegato dalle immagini qui sotto.

  • Come cambiare titolo di attività in Android?
  • Aggiunta di IthemeszedOverlay alla mia mappa
  • Android: Gestire diversi URL del server per lo sviluppo e la release
  • ActionBar pre Honeycomb
  • Utilizzando Google Maps e Baidu Maps nella stessa applicazione
  • Impostazione di allarme Android con data specifica
  • ListView elementi di ListView :

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <View android:id="@+id/bottom_line" android:layout_width="match_parent" android:layout_height="5dp" android:layout_alignParentBottom="true" android:background="#fc0" /> <!-- Why match_parent does not work in view below? --> <View android:id="@+id/stripe" android:layout_width="80dp" android:layout_height="wrap_content" android:minHeight="50dp" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:background="#f00" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_toLeftOf="@id/stripe" android:text="This is a very long line, meant to completely break the match_parent property of the box at right" style="?android:textAppearanceLarge"/> </RelativeLayout> 

    Risultato:

    RelativeLayout con il bambino non riempie verticalmente l'intero layout

    Impostare l'altezza della striscia e della radice a match_parent non fa differenza. L'ho fatto.

    Ripetendo la domanda, voglio che la striscia rossa riempia sempre il genitore verticalmente. È ansible vedere che la striscia non è allineata alla parte superiore della radice.

    Una nota: l'esempio precedente è l'esempio più semplice e autonomo che posso pensare. È solo una ListActivity con un ArrayAdapter anonimo popolato da un arrays statico statico. Il codice relativo in onCreate è al massimo 8 righe, quindi non ci si preoccupa. È davvero il layout. Inoltre, ho già lavorato con LinearLayout s nidificati, ma sto cercando di ridurre un po 'la profondità della mia struttura di layout, se ansible. LinearLayout funziona bene, come previsto.

  • Installazione di un'applicazione Android non rioutput: il pacchetto com.my.app non dispone di certificati all'entrata AndroidManifest.xml
  • Quali licenze sono le librerie di supporto Android rilasciate?
  • Crea un layout con l'animation dopo aver fatto clic su un button su Android
  • Android Studio: UNEXPECTED TOP-LEVEL EXCEPTION:
  • C'è un buon motivo per che un'intestazione di ListView prenda una posizione?
  • Come rilevare lo stato connesso?
  • 5 Solutions collect form web for “properties; match_parent per i bambini in un RelativeLayout”

    Ho avuto lo stesso requisito e la mia soluzione era quella di allineare la parte superiore della striscia rossa alla parte superiore del genitore e il fondo della striscia in fondo alla vista di text a sinistra. L'altezza in questo caso diventa irrilevante. Puoi utilizzare wrap_content o match_parent .

    Basta mettere il tuo RelativeLayout principale all'interno di un LinearLayout , quindi il calcolo dell'altezza delle LinearLayout dei bambini sarà corretto. Ho avuto lo stesso problema e ha funzionato per me.

    Prova questo:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <View android:id="@+id/stripe" android:layout_width="80dp" android:layout_height="match_parent" android:layout_alignBottom="@id/text" android:layout_alignParentRight="true" android:layout_alignTop="@id/text" android:background="#f00" android:minHeight="50dp"/> <TextView android:id="@+id/text" style="?android:textAppearanceLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_toLeftOf="@id/stripe" android:text="This is a very long line, meant to completely break the match_parent property of the box at right"/> <View android:id="@+id/bottom_line" android:layout_width="match_parent" android:layout_height="5dp" android:layout_below="@id/text" android:background="#fc0"/> </RelativeLayout> 

    L'allineamento in alto e in basso della visualizzazione rossa è la stessa di ora.

    È un problema fastidioso e devi mettere il RelativeLayout all'interno di un LinearLayout

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:minHeight="40dp" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:id="@+id/deleteItem" android:layout_width="60dp" android:layout_height="match_parent" android:layout_alignParentRight="true" android:clickable="true" android:background="@color/background_grey" > <TextView style="@style/SmallButtonFont" android:layout_marginRight="12dp" android:layout_centerInParent="true" android:text="CLEAR" android:textColor="@color/globalRedLight" /> </RelativeLayout> </RelativeLayout> </LinearLayout> 

    Aggiunga l'ascoltatore per elencare il port oggetti in modo che each volta che l'altezza cambia il titolare, impostare quella altezza per un bambino. i1 è per la parte superiore, e i3 è per il fondo.

     parent.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View view, int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7) { child.setTop(i1); child.setBottom(i3); } }); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.