12

Quali sono i vantaggi e gli svantaggi di CardView, oltre all'ombra o all'elevazione, qual è il vantaggio in termini di prestazioni e aspetto? Ciò che viene fatto usando CardView può anche essere fatto usando una combinazione di altri layout.Vantaggio e svantaggi di CardView

+0

Non ci sono differenze in 'CardView' e' ListView' eccetto ** ombre ** e ** angoli arrotondati **. Puoi fare qualsiasi cosa in listview che può essere fatto in cardview – Apurva

risposta

18

Il vantaggio di Cardview è sicuramente l'implementazione predefinita dell'ombra e gli angoli arrotondati, in parole semplici Cardview è solo un FrameLayout con ombra e angoli arrotondati. Puoi fare quasi le stesse cose con un Cardview che puoi fare con un Framelayout (come Cardview estende FrameLayout). Lo Cardview per API> 21 utilizza l'api di elevazione per impostare le ombre mentre per l'API 21 sottostante aggiunge una spaziatura con sfondo grigio per creare ombre false (proprio simile all'implementazione personalizzata di cui si parlava).

Cardview è progettato per contenere un unico punto di vista del bambino in sé e sarebbe molto difficile da gestire viste multiple bambino senza sovrapporsi gli uni sugli altri in quanto non v'è alcun supporto di proprietà come layout_below, layout_torightof ecc .. per superare questo, il L'approccio adottato dagli sviluppatori consisterebbe nell'aggiungere un altro Relativelayout all'interno dello Cardview per gestire le viste secondarie, ora ciò comporterebbe un maggiore consumo di risorse dovuto a layout nidificati.

Per gestire layout complessi si consiglia di utilizzare le viste personalizzate e solo per utilizzare una sola vista figlio utilizzare lo Cardview.

Per posizionare semplicemente l'overhead dei bordi arrotondati e delle ombre: Se consideri Framelayout come una torta, allora l'elevazione è come la glassa e gli spigoli arrotondati è come la guarnizione di ciliegie. La sua estetica con la glassa e la copertura, ma devi versare ulteriori dollari per la ciliegina e ciliegina.

+0

Quindi, quello che intendi dire è 'CardView' è utile solo se usato per Api> 21. Per Api <21 funziona come 'FrameLayout'. –

+0

@MohammedAli No, per API <21, visualizza le ombre e gli angoli con un'implementazione personalizzata. Quindi il vantaggio è che il design è coerente in tutte le versioni API. – sorianiv

+0

@Psypher si prega di rispondere anche a questo: http://stackoverflow.com/questions/36393540/no-shadow-elevation-underneath-second-card-if-there-are-two-card-in-the-layout –