2013-08-24 4 views
10

mi piacerebbe avere un orizzontale LinearLayout che è larga quanto lo schermo e alto come le sue figli, ma il trucco è che i suoi bambini avranno una larghezza dinamica ciascuno e non voglio che vadano fuori dallo schermo (ritagliati). Voglio che scorrano/rompano in una nuova riga in modo che siano tutti visibili.orizzontale LinearLayout con più figli, Move bambini al di sotto su New Line Quando No More orizzontale Spazio

Anche se totalmente irrilevante per Android, dovrebbe funzionare come il lavoro in linea di in HTML.

Ecco quello che ho in questo momento:

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="If you would enter some digits in this field " /> 
     <EditText 
      android:id="@+id/tvDistance" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:hint="enter some digits here"/> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text=" that would be great" /> 
    </LinearLayout> 

Ma non appena i figli del LinearLayout ottengono più ampia dello schermo la parte più ottiene fuori dallo schermo/invisibile.

+0

Non penso che sia fattibile nel layout di Android. A meno che non si implementino listener che misurano la larghezza e cosa no e spostano le viste verso il basso. L'altra opzione è creare una WebView e popolarla, so che è fattibile in quel modo, tuttavia non ho esperienza in questo aspetto. In bocca al lupo. – LuckyMe

risposta

14

mi piacerebbe avere un LinearLayout orizzontale che è larga quanto lo schermo e alto come i suoi figli, ma il trucco è che i suoi figli avranno larghezza dinamica ciascuno e non voglio andare li fuori dallo schermo (tagliato).

Un LinearLayout non possono farlo (qualsiasi layout predefinito dal SDK non può farlo) perché il LinearLayout è impostato per posizionare tutti i bambini in una linea orizzontale o verticale. Inoltre, qualsiasi tipo di regole di layout condizionale basate su dimensioni non ancora disponibili (come nel caso della larghezza disponibile per lo LinearLayout) non è comunque possibile nell'xml.

Quello che ti serve è un layout personalizzato che misuri i bambini a utilizzare lo spazio disponibile spostando i bambini non adatti su una nuova riga di seguito (un cosiddetto FlowLayout).

Edit:

Google ora fornisce la libreria che implementa il layout flexbox FlexBox nel web su Android. Utilizzando questa libreria, i figli di un FlexboxLayout saranno posti su più linee in base alle loro larghezze utilizzando il flexDirection (con un valore di fila) e flexWrap (con un valore di dell'involucro) attributi.

+0

link video interrotto –

+0

@ViperAlpha Sì, il sito dei parleys è sparito. Ho cercato un video sostitutivo ma non sono riuscito a trovarne. Il video proveniva da Chet Haase, uno degli sviluppatori di Android SDK, che parlava della creazione di viste personalizzate e della realizzazione di un FlowLayout. Esistono librerie che implementano tale layout se necessario, librerie come https://github.com/ApmeM/android-flowlayout – Luksprog

+1

Scopri che Google ha implementato le proprie: https://github.com/google/flexbox-layout, It sarebbe bello che tu lo aggiunga alla tua anwer –

Problemi correlati