Próbuję dodać zaokrąglenia i cienie do niektórych widoków aplikacji i korzystam z biblioteki widoku kart, aby to osiągnąć. Wygląda dobrze na urządzeniach Lollipop, ale mam problemy ze zgodnością z czymkolwiek przed Lollipopem.Biała przestrzeń z CardView na urządzeniach pre-lollipop
Przedmówię to, mówiąc, że przyjrzałem się odpowiedziom w poniższych pytaniach, stwierdziłem, że żadna z nich nie działa dla mnie.
- Appcompat CardView and Picasso no rounded Corners
- Cardview - white border around card
- Unnecessary padding in CardView?
Najpopularniejszą odpowiedzią było dodać atrybut 'cardPreventOverlap = false', ale ten usuwa zaokrąglone narożniki. Próbowałem wariacje tej flagi i "cardUseCompatPadding =" true ", ale żadna z nich nie wydaje się zdziałać. Czy ktoś inny ma podobny problem?
Mój kod:
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
card_view:cardCornerRadius="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/selector"
android:gravity="center"
android:orientation="horizontal" >
<ImageView
android:layout_width="44dp"
android:layout_height="match_parent"
android:layout_marginRight="4dp"
android:background="@color/mid_yellow"
android:padding="0dp"
android:src="@drawable/ic_add_white_24dp" />
<TextView
style="@style/Text.Primary.White"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:text="Button" />
</LinearLayout>
Jak to wygląda obecnie na Android 5.0:
Dokładna sam kod na 4.4.2 wyświetlaczy jak:
Z 'cardPreventOverlap = false':
Aktualizacja Niestety nie byliśmy w stanie rozwiązać ten problem; biorąc pod uwagę, że aplikacja miała tylko małą bazę instalacyjną pre5.0, zdecydowaliśmy, że nie jest to ważne. W końcu wybraliśmy trzecią opcję "cardPreventOverlap = false".
Obawiam się, że nie ma to wyglądać inaczej. Jeśli każdy element byłby kształtem, to tak, zmieniając narożnik każdego kształtu ORAZ używając cardPreventCornerOverlap = "false", działałby, ale są też obrazy i inne widoki w niektórych miejscach, w których potrzebuję, w których nie mogę zmienić narożników. – RobVoisey
Ale możesz po prostu umieścić go na swoim "linelayout" nie? Używając przezroczystego koloru tła i negatywów, powinno również działać. –
Nie zmienia się to tak, że tło układu liniowego nie ma wpływu na jego elementy podrzędne. Kwadratowe dzieci nadal znajdowałyby się w lewym górnym rogu zakrywającym tło Linearlayouts; Chciałbym, aby dzieci również zaokrąglone, wszystkie dzieci są odpowiednio zaokrąglone na lizaku. – RobVoisey