Constraint Layout работает аномально в API 22

При использовании Макет ограничений все действия в телефоне с поддержкой API 22 выходят за рамки, тогда как на других уровнях API выше 22 все выглядит идеально. Минимальный уровень SDK для приложения — 21. Я не могу понять, почему это происходит как Макет ограничений отлично поддерживается API 22.

Раздутый макет

<?xml version = "1.0" encoding = "utf-8"?>  
<androidx.constraintlayout.widget.ConstraintLayout
    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:orientation = "vertical"
    android:layout_width = "match_parent"
    android:layout_height = "80dp">

<de.hdodenhof.circleimageview.CircleImageView
        android:id = "@+id/user_image_recycler_inflated_main_activity"
        android:layout_width = "70dp"
        android:layout_height = "70dp" app:layout_constraintEnd_toEndOf = "parent"
        android:layout_marginEnd = "8dp" app:layout_constraintStart_toStartOf = "parent"
        android:layout_marginStart = "8dp" android:layout_marginBottom = "8dp"
        app:layout_constraintBottom_toBottomOf = "parent" android:layout_marginTop = "8dp"
        app:layout_constraintTop_toTopOf = "parent" app:layout_constraintHorizontal_bias = "0.0"
        app:layout_constraintVertical_bias = "0.095"
        tools:src = "@drawable/ic_person_black_24dp"
/>
<TextView
        android:layout_width = "233dp"
        android:layout_height = "29dp"
        android:id = "@+id/username_recycler_inflated_main_activity" app:layout_constraintEnd_toEndOf = "parent"
        android:layout_marginEnd = "8dp"
        app:layout_constraintStart_toEndOf = "@+id/user_image_recycler_inflated_main_activity"
        android:layout_marginStart = "8dp"
        app:layout_constraintTop_toTopOf = "@+id/user_image_recycler_inflated_main_activity"
        app:layout_constraintHorizontal_bias = "0.017"
        android:layout_marginTop = "4dp"
        android:textColor = "#000"
        android:hint = "Username"
/>
<TextView
        android:layout_width = "233dp"
        android:layout_height = "29dp"
        android:id = "@+id/email_recycler_inflated_main_activity"
        android:layout_marginStart = "8dp"
        app:layout_constraintEnd_toEndOf = "@+id/username_recycler_inflated_main_activity"
        android:layout_marginBottom = "4dp"
        app:layout_constraintBottom_toBottomOf = "@+id/user_image_recycler_inflated_main_activity"
        app:layout_constraintHorizontal_bias = "1.0"
        app:layout_constraintStart_toStartOf = "@+id/username_recycler_inflated_main_activity"
        android:layout_marginTop = "8dp"
        app:layout_constraintTop_toBottomOf = "@+id/username_recycler_inflated_main_activity"
        android:textColor = "#000"
        android:hint = "timestamp"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

градиент (модуль: приложение)

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

androidExtensions {
    experimental = true
}

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.two.pilots.messengerappkotlin"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'

//  Firebase
implementation 'com.google.firebase:firebase-core:16.0.6'
implementation 'com.google.firebase:firebase-firestore:17.1.5'
implementation 'com.google.firebase:firebase-storage:16.0.5'
implementation 'com.google.firebase:firebase-auth:16.1.0'
implementation 'com.google.firebase:firebase-database:16.0.5'

//  circle image view
implementation 'de.hdodenhof:circleimageview:2.2.0'

//  picasso
implementation 'com.squareup.picasso:picasso:2.71828'

//  groupie
implementation 'com.xwray:groupie:2.3.0'
implementation 'com.xwray:groupie-kotlin-android-extensions:2.3.0'

//  image compressor
implementation 'id.zelory:compressor:2.1.0'

implementation 'androidx.recyclerview:recyclerview:1.0.0'
}

apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android-extensions'

API 22, API 24, API 26 соответственно

Constraint Layout работает аномально в API 22

Некоторая информация о вашем макете была бы полезна. Трудно отлаживать просто на изображении.

Cheticamp 26.01.2019 14:23

@Cheticamp, пожалуйста, посмотрите правку

Neeraj Sewani 26.01.2019 14:59

где конечный тег </ConstraintLayout>?

A Farmanbar 26.01.2019 15:05

У меня ничего не выскакивает. Попробуйте вернуться к производственной версии ConstraintLayout, скажем, 1.1.3. У вас мая возникает проблема с выпуском 2.0.0-alpha03.

Cheticamp 26.01.2019 15:19

Изменил версию Constraint Layout на 1.1.3, но проблема осталась. Я запускал это приложение на других реальных устройствах с разными уровнями API и обнаружил, что эта проблема возникает только с реальными устройствами, независимо от уровня API.

Neeraj Sewani 26.01.2019 19:28

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

Neeraj Sewani 26.01.2019 20:06
2
6
853
2

Ответы 2

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

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

Измените ширину TextViews на 0dp. Ничего плохого в градиенте. Проблема в макете. Он не отвечает.

Если бы это был линейный макет, то этот подход сработал бы, но он не будет работать с макетом ограничений.

Neeraj Sewani 27.01.2019 07:05

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

Charan M 27.01.2019 16:49

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