Search code examples
androidandroid-studiopreview

Android Studio preview doesn't show when a floating action button is in the layout


Exactly as the title suggests when I have a floating action button anywhere in my layout in any xml file the preview stops working, I can literally comment it out and it will instantly redraw perfectly. any ideas?

I have tried resetting multiple times syncing, invalidating caches etc. When i reset the view is rendered fine but only for pages open any i open after will not render and navigating back to the previously rendered layout breaks it

The only thing I can think of is I use clans floating action button in my project, but it's the Google one that breaks my preview.

EDIT I've removed clans cleaned project invalidated caches restarted and still the issue persists

also if i change FloatingActionButton to ExtendedFloatingActionButton the preview draws fine, looking into those two it seems they extend completely different classes

Also using AndroidX

here is an example of an xml that will not render

<?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:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".settings.PdfSettingsActivity">

<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  app:layout_constraintBottom_toBottomOf="parent"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintEnd_toEndOf="parent"
  app:layout_constraintTop_toTopOf="parent"
  android:scaleType="centerCrop"
  android:layout_margin="@dimen/activity_vertical_margin_16dp"
  android:elevation="@dimen/activity_horizontal_margin_4dp"
  android:id="@+id/pdf_renderer"/>




<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/share"
    android:layout_margin="@dimen/activity_vertical_margin_16dp"
    android:src="@drawable/ic_share_white_24dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

if i comment out the floating action button the view immediately renders

com.google.android.material.floatingactionbutton.FloatingActionButton

Android Studio 3.4.1 Build #AI-183.6156.11.34.5522156, built on May 1, 2019 JRE: 1.8.0_152-release-1343-b01 x86_64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o macOS 10.14.3

EDIT

Just playing around with it now and I manage to make it throw an an error:

java.lang.IllegalArgumentException: java.lang.ClassCastException@54291cbb
at sun.reflect.GeneratedMethodAccessor971.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at android.animation.PropertyValuesHolder_Delegate.callMethod(PropertyValuesHolder_Delegate.java:108)
at android.animation.PropertyValuesHolder_Delegate.nCallFloatMethod(PropertyValuesHolder_Delegate.java:143)
at android.animation.PropertyValuesHolder.nCallFloatMethod(PropertyValuesHolder.java)
at android.animation.PropertyValuesHolder.access$400(PropertyValuesHolder.java:38)
at android.animation.PropertyValuesHolder$FloatPropertyValuesHolder.setAnimatedValue(PropertyValuesHolder.java:1387)
at android.animation.ObjectAnimator.animateValue(ObjectAnimator.java:990)
at android.animation.ValueAnimator.animateBasedOnTime(ValueAnimator.java:1339)
at android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.java:1471)
at android.animation.ValueAnimator.pulseAnimationFrame(ValueAnimator.java:1490)
at android.animation.AnimatorSet.pulseFrame(AnimatorSet.java:1163)
at android.animation.AnimatorSet.handleAnimationEvents(AnimatorSet.java:1146)
at android.animation.AnimatorSet.doAnimationFrame(AnimatorSet.java:1046)
at android.animation.AnimationHandler.doAnimationFrame(AnimationHandler.java:146)
at android.animation.AnimationHandler.access$100(AnimationHandler.java:37)
at android.animation.AnimationHandler$1.doFrame(AnimationHandler.java:54)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:947)
at android.view.Choreographer.doCallbacks(Choreographer.java:761)
at android.view.Choreographer_Delegate.doFrame(Choreographer_Delegate.java:66)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.renderAndBuildResult(RenderSessionImpl.java:563)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:425)
at com.android.layoutlib.bridge.BridgeRenderSession.render(BridgeRenderSession.java:120)
at com.android.ide.common.rendering.api.RenderSession.render(RenderSession.java:151)
at com.android.ide.common.rendering.api.RenderSession.render(RenderSession.java:133)
at com.android.tools.idea.rendering.RenderTask.lambda$null$8(RenderTask.java:755)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

build.gradle dependencies

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//Room dependencies
implementation 'androidx.room:room-runtime:2.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.firebase:firebase-core:16.0.4'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
implementation 'com.google.firebase:firebase-database:16.0.4'
implementation 'com.google.firebase:firebase-storage:16.0.4'
implementation 'com.google.firebase:firebase-auth:16.0.5'
implementation 'com.firebase:firebase-client-android:2.4.0'
annotationProcessor 'androidx.room:room-compiler:2.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0-alpha01'
annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.2.0-alpha01"
//GSON
implementation 'com.google.code.gson:gson:2.8.5'
//UI design
implementation 'com.github.hotchemi:android-rate:1.0.1'
implementation "androidx.legacy:legacy-support-core-utils:1.0.0"
implementation 'com.google.android.material:material:1.1.0-alpha07'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha06'
implementation 'com.github.siyamed:android-shape-imageview:0.9.+@aar'
implementation 'com.getkeepsafe.taptargetview:taptargetview:1.12.0'
implementation 'com.romandanylyk:pageindicatorview:1.0.3'
implementation 'com.github.VRGsoftUA:ParallaxView:1.0'
//Glide
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
//Edit image
implementation 'com.yashoid:instacropper:1.0.6'
// FloatingActionButton
implementation 'com.github.martipello:FloatingActionButton:v2.0'
//Navigation
implementation "androidx.navigation:navigation-fragment:2.1.0-alpha05"
// For Kotlin use navigation-fragment-ktx
implementation "androidx.navigation:navigation-ui:2.1.0-alpha05"
//material components
implementation 'androidx.appcompat:appcompat:1.1.0-beta01'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha4'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0-beta02'
//tests
testImplementation 'org.json:json:20180130'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.2.0'
implementation 'androidx.test.espresso:espresso-idling-resource:3.2.0'
androidTestImplementation 'androidx.test.espresso.idling:idling-concurrent:3.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.2.0'
implementation 'org.apache.commons:commons-lang3:3.8.1'
}

Solution

  • Seems like an issue with Android Studio which should be fixed in 3.5 beta 2 (as well as the latest beta I imagine). More specifically, this seems to have been Issue#129926965.

    Credit: here