布局预览无法渲染 - 可能是由于androidx.widget引起的。

4
Android Studio中的布局预览无法渲染,我不确定原因。我已经将所有内容更新到最新版本,并且在其他计算机上似乎可以正常运行。我的教授不确定如何解决这个问题,而我能找到的所有其他布局渲染Stack Overflow帖子都已经过时了。我尝试过刷新、重启、重新构建、无效缓存等方法......

我能得到的最好的线索是,可能与androidx.constraintlayout.widget.ConstraintLayout没有得到适当支持有关。我的教授还提到可能存在Jetpack问题?不太确定他的意思。

enter image description here

activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" android:background="@android:color/background_light">
    <EditText
            android:layout_width="86dp"
            android:layout_height="45dp"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/totalTwentyEditText"
            app:layout_constraintStart_toEndOf="@+id/totalFifteenEditText" app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline4" android:text="0.00" android:textAlignment="center"
            android:focusable="false" android:longClickable="false"/>
    <androidx.constraintlayout.widget.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content"
                                                android:id="@+id/guideline" app:layout_constraintGuide_begin="20dp"
                                                android:orientation="horizontal"/>
    <androidx.constraintlayout.widget.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content"
                                                android:id="@+id/guideline2" app:layout_constraintGuide_begin="86dp"
                                                android:orientation="horizontal"/>
    <androidx.constraintlayout.widget.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content"
                                                android:id="@+id/guideline3" app:layout_constraintGuide_begin="128dp"
                                                android:orientation="horizontal"/>
    <androidx.constraintlayout.widget.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content"
                                                android:id="@+id/guideline4"
                                                android:orientation="horizontal"
                                                app:layout_constraintGuide_begin="191dp"/>
    <androidx.constraintlayout.widget.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content"
                                                android:id="@+id/guideline5" app:layout_constraintGuide_begin="259dp"
                                                android:orientation="horizontal"/>
    <androidx.constraintlayout.widget.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content"
                                                android:id="@+id/guideline6" app:layout_constraintGuide_begin="309dp"
                                                android:orientation="horizontal"/>
    <androidx.constraintlayout.widget.Barrier
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/leftColumn"
            app:barrierDirection="end"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="16dp"
            app:constraint_referenced_ids="textView3,textView5,textView4,textView2,textView"/>
    <TextView
            android:text="@string/bill_total"
            android:layout_width="wrap_content"
            android:layout_height="23dp"
            android:id="@+id/textView" android:textSize="18sp"
            android:textStyle="bold"
            android:textAlignment="viewEnd"
            android:textColor="@android:color/black"
            android:layout_marginStart="16dp"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline"
            android:layout_marginBottom="8dp"
            app:layout_constraintBottom_toBottomOf="@+id/billTotalEditText"/>
    <TextView
            android:text="@string/tip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView2" android:textSize="18sp"
            android:textStyle="bold" android:textAlignment="viewEnd" android:textColor="@android:color/black"
            android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="@+id/leftColumn"
            android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="@+id/guideline3"
            android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="@+id/tipTenEditText"/>
    <TextView
            android:text="@string/total"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView3" android:textSize="18sp"
            android:textStyle="bold" android:textAlignment="viewEnd" android:textColor="@android:color/black"
            android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="@+id/leftColumn"
            android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="@+id/guideline4"
            android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="@+id/totalTenEditText"/>
    <TextView
            android:text="@string/custom"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView4" android:textSize="18sp"
            android:textStyle="bold" android:textAlignment="viewEnd" android:textColor="@android:color/black"
            android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="@+id/leftColumn"
            android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="@+id/guideline5"
            android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="@+id/customSeekBar"/>
    <TextView
            android:text="@string/tip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView5" android:textSize="18sp"
            android:textStyle="bold" android:textAlignment="viewEnd" android:textColor="@android:color/black"
            android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="@+id/leftColumn"
            android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="@+id/guideline6"
            android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="@+id/tipEditText"/>
    <EditText
            android:layout_width="302dp"
            android:layout_height="39dp"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/billTotalEditText"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline"
            android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="@id/leftColumn"
            app:layout_constraintHorizontal_bias="0.0" android:text="@string/zeroDecimal"/>
    <EditText
            android:layout_width="81dp"
            android:layout_height="wrap_content"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/tipTenEditText"
            app:layout_constraintStart_toEndOf="@+id/textView2" app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintEnd_toStartOf="@+id/tipFifteenEditText" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline3" android:text="@string/zeroDecimal"
            android:textAlignment="center" android:focusable="false" android:longClickable="false"/>
    <EditText
            android:layout_width="86dp"
            android:layout_height="wrap_content"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/tipFifteenEditText"
            app:layout_constraintStart_toEndOf="@+id/tipTenEditText" app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintEnd_toStartOf="@+id/tipTwentyEditText" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline3" android:text="@string/zeroDecimal"
            android:textAlignment="center" android:focusable="false" android:longClickable="false"/>
    <EditText
            android:layout_width="86dp"
            android:layout_height="wrap_content"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/tipTwentyEditText"
            app:layout_constraintStart_toEndOf="@+id/tipFifteenEditText" app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline3" android:text="@string/zeroDecimal"
            android:textAlignment="center" android:focusable="false" android:longClickable="false"/>
    <TextView
            android:text="@string/tenPercent"
            android:layout_width="36dp"
            android:layout_height="23dp"
            android:id="@+id/textView6" android:textSize="18sp"
            android:textAlignment="center" android:textStyle="bold" android:textColor="@android:color/black"
            android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="@+id/guideline2"
            app:layout_constraintStart_toStartOf="@+id/tipTenEditText" app:layout_constraintEnd_toEndOf="@+id/tipTenEditText"/>
    <TextView
            android:text="@string/fifteenPercent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView7" android:textSize="18sp"
            android:textAlignment="center" android:textStyle="bold" android:textColor="@android:color/black"
            android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="@+id/guideline2"
            app:layout_constraintStart_toStartOf="@+id/tipFifteenEditText" app:layout_constraintEnd_toEndOf="@+id/tipFifteenEditText"/>
    <TextView
            android:text="@string/twentyPercent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView8" android:textSize="18sp"
            android:textAlignment="center" android:textStyle="bold" android:textColor="@android:color/black"
            android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="@+id/guideline2"
            app:layout_constraintStart_toStartOf="@+id/tipTwentyEditText" app:layout_constraintEnd_toEndOf="@+id/tipTwentyEditText"/>
    <EditText
            android:layout_width="80dp"
            android:layout_height="45dp"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/totalTenEditText"
            app:layout_constraintStart_toEndOf="@+id/textView3" app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintEnd_toStartOf="@+id/totalFifteenEditText" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline4" android:text="@string/zeroDecimal"
            android:textAlignment="center" android:focusable="false" android:longClickable="false"/>
    <EditText
            android:layout_width="86dp"
            android:layout_height="45dp"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/totalFifteenEditText"
            app:layout_constraintStart_toEndOf="@+id/totalTenEditText" app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintEnd_toStartOf="@+id/totalTwentyEditText" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline4" android:text="@string/zeroDecimal"
            android:textAlignment="center" android:focusable="false" android:longClickable="false"/>
    <SeekBar
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/customSeekBar" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline5" app:layout_constraintEnd_toStartOf="@+id/customTextView"
            android:layout_marginEnd="8dp" app:layout_constraintStart_toEndOf="@+id/leftColumn"
            android:layout_marginStart="8dp" android:progress="18" android:max="100"/>
    <TextView
            android:text="@string/eighteenPercent"
            android:layout_width="55dp"
            android:layout_height="29dp"
            android:id="@+id/customTextView" android:textSize="18sp"
            android:textAlignment="center" android:textStyle="bold" android:textColor="@android:color/black"
            android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="@+id/guideline5"
            app:layout_constraintStart_toStartOf="@+id/totalTwentyEditText" app:layout_constraintEnd_toEndOf="@+id/totalTwentyEditText"
            android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="@+id/customSeekBar"/>
    <EditText
            android:layout_width="84dp"
            android:layout_height="43dp"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/tipEditText" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline6"
            app:layout_constraintEnd_toEndOf="@+id/totalTenEditText"
            app:layout_constraintStart_toStartOf="@+id/totalTenEditText"
            android:text="@string/zeroDecimal" android:textAlignment="center" android:focusable="false"
            android:longClickable="false"/>
    <TextView
            android:text="@string/total"
            android:layout_width="51dp"
            android:layout_height="26dp"
            android:id="@+id/textView10" android:textSize="18sp"
            android:textStyle="bold" android:textAlignment="viewEnd" android:textColor="@android:color/black"
            android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="@+id/guideline6"
            android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="@+id/tipEditText"
            app:layout_constraintStart_toStartOf="@+id/totalFifteenEditText" app:layout_constraintEnd_toEndOf="@+id/totalFifteenEditText"/>
    <EditText
            android:layout_width="86dp"
            android:layout_height="47dp"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/totalEditText" android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="@+id/guideline6"
            app:layout_constraintStart_toStartOf="@+id/totalTwentyEditText"
            app:layout_constraintEnd_toEndOf="@+id/totalTwentyEditText"
            app:layout_constraintBottom_toBottomOf="@+id/textView10" android:text="@string/zeroDecimal"
            android:textAlignment="center" android:focusable="false" android:longClickable="false"/>
</androidx.constraintlayout.widget.ConstraintLayout>

应用程序Gradle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.tipcalculator"
        minSdkVersion 17
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

非常感谢您的帮助。


“强制刷新布局”在我昨天遇到这个问题时对我起了作用。虽然所链接的答案是针对Android Studio 3.1的,但在我的3.3.1上也有效。 - CommonsWare
@CommonsWare 我希望 - 我尝试过了,可以告诉你它会刷新但布局不会改变。 - Genevieve
点击红色感叹号并向我们展示错误。你清理了你的构建吗? - Steve Moretz
2个回答

3

我看到你的实现有误:

com.android.support.constraint:constraint-layout:1.1.3

你需要具备以下条件:

androidx.constraintlayout:constraintlayout:2.0.0-alpha3

还有一些其他的,比如:

com.android.support:appcompat-v7:27.1.1

要修复所有问题,请转到重构(菜单)-> 迁移到AndroidX,如果您没有此选项,请更新您的IDE(Android Studio)。


嘿 - 你肯定是对的,但现在我遇到了一个错误,我的主活动中导入android.support.v7.app.AppCompatActivity时出现未解决的引用v7。 - Genevieve
没关系,我已经删除了那部分内容 - 现在它可以正常工作了。我还想提一下,在将 android.enableJetifier=true 添加到 gradle 属性之前,渲染是不起作用的。 - Genevieve
@ Mia 是的,这个重构有很多bug,你应该自己修复一些部分,只需删除红色的导入语句并通过 alt + enter 添加新的导入语句。android.enableJetifier=true 应该由重构添加。 :) - Steve Moretz

2
  1. You can go to Refractor Menu and then -> Click on Migrate To Android X

  2. These dependencies will be added automatically, if not you can add these (Note: Dependency Versions may vary)

    implementation 'androidx.appcompat:appcompat:1.0.2'
    
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    
    implementation 'com.google.firebase:firebase-auth:16.2.1'
    
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    
    testImplementation 'junit:junit:4.12'
    
    androidTestImplementation 'androidx.test:runner:1.1.1'
    
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    
  3. Try "Force Refresh Layout" option from Layout Editor in preview.

  4. If the 3rd Option doesn't help, try cleaning and rebuilding your project. This should fix the issue.

我知道这个问题已经有了一个回答,但是这些步骤可能会帮助到某些人,因为我使用这些步骤解决了同样的问题。

最初的回答:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接