Próbuję uzyskać CardView, aby wyświetlał efekt tętnienia po dotknięciu, ustawiając atrybut android: backgound w pliku XML aktywności, jak opisano tutaj na stronie programistów Androida, ale to nie działa. Brak animacji, ale wywoływana jest metoda onClick. Próbowałem również utworzyć plik ripple.xml, jak sugerowano tutaj , ale ten sam wynik.
CardView, jak pojawia się w pliku XML działania:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="155dp"
android:layout_height="230dp"
android:elevation="4dp"
android:translationZ="5dp"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:onClick="showNotices"
android:background="?android:attr/selectableItemBackground"
android:id="@+id/notices_card"
card_view:cardCornerRadius="2dp">
</android.support.v7.widget.CardView>
Jestem stosunkowo nowy w rozwoju Androida, więc mogłem popełnić kilka oczywistych błędów.
android
android-layout
android-5.0-lollipop
android-cardview
AkraticCritic
źródło
źródło
?android:attr/selectableItemBackground
wymaga interfejsu API na poziomie 11android:clickable="true"
.Dodaj te dwa kody wiersza do swojego widoku XML, aby uzyskać efekt falowania na karcie.
źródło
foreground
działa z niestandardowymi widokami tła jak urok! Miły!Udało mi się uzyskać efekt marszczenia w widoku karty poprzez:
a dla custom_bg, który widzisz w powyższym kodzie, musisz zdefiniować plik xml zarówno dla urządzeń Lollipop (w pakiecie drawable-v21), jak i pre-Lollipop (w pakiecie drawable). dla custom_bg w pakiecie drawable-v21 kod to:
dla custom_bg w pakiecie wysuwnym kod to:
więc na urządzeniach z pre-Lollipop będziesz mieć efekt solidnego kliknięcia, a na urządzeniach z Lollipop będziesz miał efekt tętnienia na widoku karty.
źródło
Efekt marszczenia został pominięty w bibliotece obsługi aplikacji appcompat, której używasz. Jeśli chcesz zobaczyć tętnienie, użyj wersji Android L i przetestuj ją na urządzeniu z Androidem L. W witrynie AppCompat v7:
„Dlaczego w wersji wcześniejszej niż Lollipop nie ma żadnych zmarszczek? Wiele z tego, co pozwala RippleDrawable na płynne działanie, to nowy RenderThread Androida 5.0. Aby zoptymalizować wydajność w poprzednich wersjach Androida, na razie pozostawiliśmy RippleDrawable”.
Sprawdź ten link tutaj, aby uzyskać więcej informacji
źródło
Jeśli
minSdkVersion
pracujesz nad aplikacją na poziomie 9, możesz użyć:Zamiast tego, zaczynając od poziomu 11, używasz:
Z dokumentacji:
źródło
Dla mnie dodanie
foreground
doCardView
nie działało (przyczyna nieznana: /)Dodanie tego samego do układu potomnego załatwiło sprawę.
KOD:
źródło
Dodaj te dwa kody działające jak urok dla dowolnego widoku, takiego jak Button, układ liniowy lub CardView Wystarczy umieścić te dwa wiersze i zobaczyć magię ...
źródło
Jeśli istnieje układ główny, taki jak RelativeLayout lub LinearLayout, który zawiera cały składnik elementu adaptera w CardView, należy ustawić atrybut tła w tym układzie głównym. lubić:
źródło
Zdarzenie Ripple dla
Cardview
kontroli Androida :źródło
Nie byłam zadowolona z AppCompat, więc napisałam własne CardView i backported ripples. Tutaj działa na Galaxy S z Piernikiem, więc jest to zdecydowanie możliwe.
Aby uzyskać więcej informacji, sprawdź kod źródłowy .
źródło
Dodaj następujące elementy do pliku xml:
I dodaj do adaptera (jeśli to Twoja obudowa)
źródło
Dla tych, którzy szukają rozwiązania problemu efektu marszczenia, który nie działa na programowo utworzonym CardView (lub w moim przypadku widoku niestandardowym, który rozszerza CardView) wyświetlanym w RecyclerView, następujące działanie działało dla mnie. Zasadniczo deklaratywne deklarowanie atrybutów XML wspomnianych w innych odpowiedziach w pliku układu XML nie działa w przypadku programu CardView lub programu utworzonego z niestandardowego układu (nawet jeśli widok główny to CardView lub używany jest element scalania), więc muszą być ustawione programowo tak:
Gdzie
MadeupCardView extends CardView
pochwały dla tej odpowiedzi za tęTypedArray
część.źródło
Działa tylko interfejs API 21 i nie używaj tego widoku karty listy wierszy
źródło
Zamiast tego użyj Material Cardview, rozszerza Cardview i zapewnia wiele nowych funkcji, w tym domyślny efekt klikalności:
Zależność
źródło