CardView не отображается на устройстве Android (API 21 и ниже)

Привет, я создаю дизайн домашней приборной панели в моем приложении с помощью cardviews, проблема в том, что в api 21 (Android 5.1) cardview не отображается. Я попытался включить аппаратное ускорение в манифест Android, но все еще не работает. Вот мой код:

<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:background = "#f2f9ff"
    tools:context = ".activity.MainActivity">

    <ImageView
        android:id = "@+id/imageView"
        android:layout_width = "385dp"
        android:layout_height = "273dp"
        android:scaleType = "centerCrop"
        app:srcCompat = "@drawable/header_img"
        tools:layout_editor_absoluteX = "0dp"
        tools:layout_editor_absoluteY = "0dp" />

    <ImageView
        android:id = "@+id/imageView2"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"

        android:layout_centerHorizontal = "true"
        android:layout_marginTop = "29dp"
        app:srcCompat = "@drawable/ukssssssss"
        tools:layout_editor_absoluteX = "142dp"
        tools:layout_editor_absoluteY = "93dp" />

    <TextView
        android:id = "@+id/textView"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_below = "@+id/imageView2"
        android:layout_centerHorizontal = "true"
        android:text = "UKS TK CENDEKIA HARAPAN"
        android:textColor = "#fff"
        tools:layout_editor_absoluteX = "102dp"
        tools:layout_editor_absoluteY = "193dp" />

    <GridLayout
        android:id = "@+id/mainGrid"
        android:layout_width = "383dp"
        android:layout_height = "293dp"
        android:layout_alignParentEnd = "true"
        android:layout_alignParentRight = "true"
        android:layout_below = "@+id/textView3"
        android:layout_marginTop = "35dp"
        android:layout_weight = "8"
        android:alignmentMode = "alignMargins"
        android:columnCount = "2"
        android:padding = "14dp"
        android:rowCount = "2"
        tools:layout_editor_absoluteX = "1dp"
        tools:layout_editor_absoluteY = "239dp">

        <android.support.v7.widget.CardView
            android:layout_width = "0dp"
            android:layout_height = "0dp"
            android:layout_columnWeight = "1"
            android:layout_marginBottom = "16dp"
            android:layout_marginLeft = "16dp"
            android:layout_marginRight = "16dp"
            android:layout_rowWeight = "1"
            app:cardCornerRadius = "8dp"
            app:cardElevation = "8dp">

            <LinearLayout
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:layout_gravity = "center_horizontal|center_vertical"
                android:layout_margin = "16dp"
                android:orientation = "vertical">

                <ImageView
                    android:layout_width = "125dp"
                    android:layout_height = "55dp"
                    android:layout_gravity = "center_horizontal"
                    android:src = "@drawable/medicalrecord"

                    />

                <TextView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:text = "Medical Record"

                    android:textColor = "@android:color/black"
                    android:textSize = "12sp"
                    android:textStyle = "bold" />


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

        <android.support.v7.widget.CardView
            android:layout_width = "0dp"
            android:layout_height = "0dp"
            android:layout_columnWeight = "1"
            android:layout_marginBottom = "16dp"
            android:layout_marginLeft = "16dp"
            android:layout_marginRight = "16dp"
            android:layout_rowWeight = "1"
            app:cardCornerRadius = "8dp"
            app:cardElevation = "8dp">

            <LinearLayout
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:layout_gravity = "center_horizontal|center_vertical"
                android:layout_margin = "16dp"
                android:orientation = "vertical">

                <ImageView
                    android:layout_width = "125dp"
                    android:layout_height = "55dp"
                    android:layout_gravity = "center_horizontal"
                    android:src = "@drawable/plant" />

                <TextView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:text = "Nusantara Plants"

                    android:textColor = "@android:color/black"
                    android:textSize = "12sp"
                    android:textStyle = "bold" />


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

        <android.support.v7.widget.CardView
            android:layout_width = "0dp"
            android:layout_height = "0dp"
            android:layout_columnWeight = "1"
            android:layout_marginBottom = "16dp"
            android:layout_marginLeft = "16dp"
            android:layout_marginRight = "16dp"
            android:layout_rowWeight = "1"
            app:cardCornerRadius = "8dp"
            app:cardElevation = "8dp">

            <LinearLayout
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:layout_gravity = "center_horizontal|center_vertical"
                android:layout_margin = "16dp"
                android:orientation = "vertical">

                <ImageView
                    android:layout_width = "125dp"
                    android:layout_height = "55dp"
                    android:layout_gravity = "center_horizontal"
                    android:src = "@drawable/healingtherapy" />

                <TextView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:text = "Healing Therapy"

                    android:textColor = "@android:color/black"
                    android:textSize = "12sp"
                    android:textStyle = "bold" />


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

        <android.support.v7.widget.CardView
            android:layout_width = "0dp"
            android:layout_height = "0dp"
            android:layout_columnWeight = "1"
            android:layout_marginBottom = "16dp"
            android:layout_marginLeft = "16dp"
            android:layout_marginRight = "16dp"
            android:layout_rowWeight = "1"
            app:cardCornerRadius = "8dp"
            app:cardElevation = "8dp">

            <LinearLayout
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:layout_gravity = "center_horizontal|center_vertical"
                android:layout_margin = "16dp"
                android:orientation = "vertical">

                <ImageView
                    android:layout_width = "125dp"
                    android:layout_height = "55dp"
                    android:layout_gravity = "center_horizontal"
                    android:src = "@drawable/calendaricon"

                    />

                <TextView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:text = "What's Going On?"
                    android:textAlignment = "center"
                    android:textColor = "@android:color/black"
                    android:textSize = "12sp"
                    android:textStyle = "bold" />


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

    </GridLayout>

    <TextView
        android:id = "@+id/textView3"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_below = "@+id/textView"
        android:layout_centerHorizontal = "true"
        android:layout_marginTop = "12dp"
        android:text = "Indonesia Sehat"
        android:textColor = "#fff"
        android:textSize = "18sp"
        android:textStyle = "bold" />

</RelativeLayout>

Пробовал на другой версии Android, но он работает, а также, когда в представлении дизайна я меняю его на api 21, он также показывает черный вид карты вместо белого. Вопрос о эта ссылка не решает мою проблему, они просят решить проблему повышения карты, а не отображение карты нет

Возможный дубликат Android CardView не работает на Api 21

Vishva Dave 05.06.2018 07:43

пожалуйста, посмотрите мое редактирование, спасибо, и, кстати, это не решает мою проблему @VishvaDave

Timothy 05.06.2018 07:47

Что вы имеете в виду, говоря, что карта не отображается ... вы не можете видеть карту, если нет высоты ... она будет отображаться как нормальный макет ... так что в основном ваша карта работает, но тени нет, поэтому она выглядит как нормальная .. так что попробуйте это решение один раз

Vishva Dave 05.06.2018 07:51

я добавил высоту в карточках @VishvaDave

Timothy 05.06.2018 07:54

см. мой ответ @TimothyDillan

Ali 05.06.2018 07:56

Высота не будет работать менее чем за 21 api, поэтому необходимо добавить этот атрибут, упомянутый в ответе .. почему бы вам не попробовать его один раз и не увидеть результат ... также добавьте card_view: cardBackgroundColor = "@ color / white"

Vishva Dave 05.06.2018 07:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
2 137
7

Ответы 7

Чувак Ничего общего с твоим кодом, просто добавь библиотеку Gradle

Добавьте ниже библиотеку в свой Gradle (приложение):

implementation 'com.android.support:cardview-v7:26.1.+'
  • Просто я скопирую ваш код и вставлю его в свою Android Studio. После этого я добавлю указанную выше библиотеку, и она даст мне результат ниже:

я сделал lel @MohammadAli

Timothy 05.06.2018 08:03

извини, я тебя не понял @TimothyDillan

Ali 05.06.2018 08:06

Я реализовал это @MohammadAli

Timothy 05.06.2018 08:12

Смотрите в моем ответе, он дает мне результат успешно после добавления библиотеки

Ali 05.06.2018 08:21

Ваш код содержит такие свойства CardView, которые совместимы с API 22 и выше. По этой причине CardView не может отображаться.

Это те свойства CarView.

android:layout_columnWeight = "1"
android:layout_rowWeight = "1"

Вы должны проверить эту часть.

так я должен его удалить? @ParthPatel

Timothy 05.06.2018 08:13

Не так, но можно попробовать по-другому.

Parth Patel 05.06.2018 08:15

каким еще способом я спрашиваю @ParthPatel

Timothy 05.06.2018 08:19

пытаться используя android.support.v7.widget.GridLayout вместо GridLayout и измените

android:layout_columnWeight = "1"
android:layout_rowWeight = "1"

свойства внутри cardview к

app:layout_columnWeight = "1"
app:layout_rowWeight = "1"

поместите android: hardwareAccelerated = "false" в ManiFest

Эти два свойства будут отображаться, если CardView находится в GridLayout.

<GridLayout
       android:layout_width = "match_parent"
       android:layout_height = "match_parent"
       android:rowCount = "3"
       android:columnCount = "2"
       android:alignmentMode = "alignMargins"
       android:columnOrderPreserved = "false">

               <android.support.v7.widget.CardView
                        android:layout_width = "match_parent"
                        android:layout_height = "match_parent"
                        android:elevation = "6dp"
                        app:cardCornerRadius = "6dp"
                        app:cardElevation = "6dp"
                        android:layout_columnWeight = "1"
                        android:layout_rowWeight = "1"
                        >



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

Сначала добавьте в файл сборки Gradle:

implementation 'com.android.support:gridlayout-v7:28.0.0'

Затем измените Макет сетки на androidx.gridlayout.widget.GridLayout а некоторые требуемые должны быть изменены с андроид: на приложение:

Я столкнулся с подобной проблемой, и вот как я ее решил.

  • Шаг 1. Добавьте android.support.v7.widget.GridLayout в приложение gradle.

  • Шаг 2. Используйте android.support.v7.widget.GridLayout вместо GridLayout

  • Шаг 3. Измените следующие атрибуты в Gridlayout

android:alignmentMode = "alignMargins"
android:columnCount = "2"
android:rowCount = "2"

К:

app:alignmentMode = "alignMargins"
app:columnCount = "2"
app:rowCount = "2"
  • Шаг 4. Измените следующие атрибуты в Cardview
android:layout_rowWeight = "1" 
android:layout_columnWeight = "1"

К:

app:layout_rowWeight = "1"
app:layout_columnWeight = "1"

Другие вопросы по теме