为什么这个相对简单的布局不能在Android Studio中呈现?

当我在Android Studio中打开此文件,而不是布局的渲染预览时,我看到“渲染问题”和下面显示的错误列表 . 但是在设备上运行时看起来很好 .

但是,对布局的一些调整将导致它被渲染......

  • 将按钮设置为宽度为0dp

  • 交换LinearLayouts layout_1和layout_2的排序

  • 将layout_1或layout_2的高度降低到100dp

  • 从scrollview中删除LinearLayouts

当我将项目迁移到Gradle和API 21时,这只会成为一个问题 .


不会在Android Studio中呈现的布局

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">


<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/scrollView2" >

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/d">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/layout_1"
            android:layout_marginTop="@dimen/list_item_vertical_padding">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:text="New Text"
                android:id="@+id/textView2" />

        </LinearLayout>

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/layout_2"
            android:clickable="false"
            android:layout_marginTop="@dimen/list_item_vertical_padding">

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="300dp"
                android:id="@+id/interface_2"
                android:showDividers="end"
           android:divider="@android:drawable/divider_horizontal_textfield">

                <!-- Stuff gets inflated into here -->

            </LinearLayout>

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@+id/stats_button_container"
                android:focusableInTouchMode="false">

                <Button
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:text="@string/all_data"
                    android:id="@+id/stats_range_button_1"
                    android:layout_gravity="center"
                    android:textAlignment="center"
                    android:singleLine="false"
                    android:clickable="true"
                    android:layout_margin="5dp"
                    android:textColor="@color/standard_text_on_white"
                    android:layout_weight="1" />

                <Button
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:text="@string/six_months_of_data"
                    android:id="@+id/stats_range_button_2"
                    android:layout_gravity="center"
                    android:textAlignment="center"
                    android:singleLine="false"
                    android:clickable="true"
                    android:layout_margin="5dp"
                    android:textColor="@color/standard_text_on_white"
                    android:layout_weight="1" />

                <Button
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:text="@string/one_month_of_data"
                    android:id="@+id/stats_range_button_3"
                    android:layout_gravity="center"
                    android:textAlignment="center"
                    android:singleLine="false"
                    android:layout_margin="5dp"
                    android:textColor="@color/standard_text_on_white"
                    android:layout_weight="1" />
            </LinearLayout>
        </LinearLayout>

    </LinearLayout>
</ScrollView>

android.view.View上的android.view.Delegate.drawChild(ViewGroup_Delegate.java:61)中的android.view.ViewGroup_Delegate.drawShadow(ViewGroup_Delegate.java:74)中的java.lang.NullPointerException(ViewGroup.Devgate:61):ViewGroup.java:3404 )在android.view.View.Dis上的android.view.View.Dis上的android.view.View.Av((ViewGroup.java:35017)的android.view.View.Dis上的android.view.View.DavatchDraw(ViewGroup.java:35017) .ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53)位于android.view.View.View.Davc上的android.view.ViewGroup.DispatchDraw(ViewGroup.java:3198)的android.view.ViewGroup.drawChild(ViewGroup.java:3404) View.java:15017)在android.view.ViewGroup.Delegate.drawChild的android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53)上的android.view.ViewGroup.drawChild_Original(ViewGroup.java:3404)(ViewGroup.java:3404) )在android.view.View.View.Davinal_Original(ViewGroup.java:34)的android.view.View.draw(View.java:15017)上的android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198) 04)在android.view.View.Delegate.drawChild(ViewGroup_Delegate.java:53)的android.view.ViewGroup.Davatch:我在Android.view.ViewGroup.Davatch:(ViewGroup.java:3404)安卓 . 在android.view.view.draw的android.widget.ScrollView.draw(ScrollView.java:1689)android.widget.FrameLayout.draw(FrameLayout.java:592)的view.View.draw(View.java:15117) (View.java:15022)位于android.view.ViewGroup.Delegate.drawChild的android.view.ViewGroup.Delegate.drawChild(ViewGroup_Delegate.java:53)的android.view.ViewGroup.drawChild_Original(ViewGroup.java:3404)(ViewGroup.java: 3404)在android.view.View.Dis上面的android.view.View.Dis上的android.view.View.Dap(ViewGroup.java:35017)上的android.view.View.DavatchDraw(ViewGroup.java:3508) . 在android.view.View.View.draw.draw的android.view.ViewGroup.DispatchDraw(ViewGroup.java:3198)的android.view.ViewGroup.drawChild(ViewGroup.java:3404)的view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53) (View.java:15017)在androi d.view.ViewGroup.drawChild_Original(ViewGroup.java:3404)位于android.view.View上的android.view.View.Delegate.drawChild(ViewGroup_Delegate.java:53),android.view. .dispatchDraw(ViewGroup.java:3198)位于android.view.View.draw(View.java:15117)的android.view.View.draw(View.java:15022),位于android.view.ViewGroup.drawChild_Original(ViewGroup . java:3404)在android.view.ViewGroup.Delegate.drawChild(ViewGroup_Delegate.java:53)的android.view.ViewGroup.drawChild(ViewGroup.java:3404)android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)at at android.view.View.draw(View.java:15117)at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:587)at com.android.layoutlib.bridge.Bridge.createSession(Bridge . java:334)com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)at com.android.tools.idea.rendering.RenderService $ 5.compute(RenderService.java:708)at com . android.tools.idea.rendering . RenderService $ 5.compute(RenderService.java:697)位于com.andll.tools.idein.renmpl.ApplicationImpl.runReadAction(ApplicationImpl.java:932)的com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java) :697)位于org.jetbrains.android的org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:646)的com.android.tools.idea.rendering.RenderService.render(RenderService.java:816) . uipreview.AndroidLayoutPreviewToolWindowManager.access $ 1700(AndroidLayoutPreviewToolWindowManager.java:82)org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager $ 7 $ 1.run(AndroidLayoutPreviewToolWindowManager.java:589)at com.intellij.openapi.progress.impl.ProgressManagerImpl $ 2.run( ProgressManagerImpl.java:178)com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(Progre) ssManagerImpl.java:212)at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171)at atorg.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager $ 7.run(AndroidLayoutPreviewToolWindowManager.java:584)在com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)在com.intellij.util.ui.update .MergingUpdateQueue.execute(MergingUpdateQueue.java:310)at com.intellij.util.ui.update.MergingUpdateQueue $ 2.run(MergingUpdateQueue.java:254)at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue . 的java:269)在com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)在com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)在com.intellij .util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)在com.intellij.util.Alarm $请求$ 1.run(Alarm.java:327)在java.util.concurrent.Executors $ RunnableAdapter.call(执行人 . Java的:471)在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:334)在java.util.concurrent.FutureTask.run(FutureTask.java:166)在java.util.concur rent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615)在java.lang.Thread.run(Thread.java:724)