2014-11-12 22 views
12

Possiedo alcuni elementi RecyclerView con scheda. E su dispositivi preLollipop sembra a posto. Ma su Lollipop sembra senza spaziatura tra le carte bambino. Ho provato a usare margini e padding, ma non è stato d'aiuto. Quando uso il margine sul lecca-lecca sembra buono, ma con lo stesso margine sulla spaziatura pre-lecca-lecca è molto grande. Ancora una volta: perché ci sono diverse distanze? Quale proprietà dovrei usare per risolverlo?Utilizzo di RecyclerView con scheda

risposta

22

Questo accade perché su L, le ombre sono al di fuori dei limiti della vista ma pre-L, sono all'interno della vista (purtroppo non esiste un vero supporto per le ombre pre-L).

Se si desidera che CardView abbia la stessa spaziatura su L, impostare cardUseCompatPadding su true.

1

Ho avuto lo stesso problema. Ho dovuto creare una cartella layout-v21, che verrà utilizzata dai dispositivi lollipop, e duplicare il layout aggiungendo il margine/padding di cui avevo bisogno per spaziarlo correttamente.

In questo modo, quando l'app viene avviata su lecca-lecca, il layout verrà letto dalla cartella layout-v21 con lo spazio corretto aggiunto e qualsiasi altro dispositivo andrà al file di layout standard in cui lo spazio non è necessario per essere impostato in modo esplicito.

Spero che questo aiuti.

15

La risposta di yigit è stata utile ma non ha molti dettagli, quindi aggiungo alcuni qui per i futuri spettatori di questo post.

Ecco un esempio di come ho ottenuto questo funzionamento (non ovvio dal collegamento android site nella risposta di yigit).

<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:layout_marginLeft="@dimen/activity_vertical_margin" 
    android:layout_marginRight="@dimen/activity_vertical_margin" 
    android:layout_marginTop="2dip" 
    android:layout_marginBottom="2dip" 
    card_view:cardUseCompatPadding="true"> 

    // Other layouts and views here 

</android.support.v7.widget.CardView> 

La visualizzazione della carta che necessitava di un trattino basso e di utilizzare lo schema di res-auto non era evidente.

C'è un buon esempio di questo nello Material Design Training.

+1

Manca un tag di chiusura nel CardView. Volevo aggiustarlo ma ho bisogno di modificare almeno 6 caratteri :((e non c'era nient'altro che potessi pensare di cambiare) - sarebbe bello se potessi correggerlo :) – AgentKnopf

+1

Oops. Tutto pronto ora? – Splaktar

+1

Jepp sta bene e ti ringrazio per la risposta dettagliata :)! Anche se ho dovuto rimuovere quel card_view: cardUseCompatPadding - poiché non veniva risolto correttamente. Non sono sicuro che fosse la biblioteca che all'epoca mancava, ma se davvero non funziona ti risponderò. Anche se penso che fosse collegato ad un altro problema e se lo hai testato, dovrebbe andare bene, credo. – AgentKnopf

Problemi correlati