为啥 Android Studio 预览版中的 Activity 外观与设备上的不同?

Posted

技术标签:

【中文标题】为啥 Android Studio 预览版中的 Activity 外观与设备上的不同?【英文标题】:Why is the look of the activity different in the Android Studio preview than on the device?为什么 Android Studio 预览版中的 Activity 外观与设备上的不同? 【发布时间】:2018-07-25 10:20:58 【问题描述】:

我创建了一个导航抽屉活动,发现它的内容页面在预览中看起来不同。

This is the preview.

And this is the AVD appearance (it looks like a real device too).

XML 代码是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    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_
    android:layout_
    android:orientation="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.xy.xy.HomePage">

    <RelativeLayout
        android:layout_
        android:layout_
        android:layout_marginLeft="5sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="5sp">

    <ImageView
        android:id="@+id/TestMenuImage"
        android:layout_
        android:layout_
        android:contentDescription="@string/app_name"
        app:srcCompat="@drawable/bg1"
        tools:scaleType="centerCrop" />

    <RelativeLayout
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true"
        tools:background="@color/hbm_text_background">

    <TextView
        android:id="@+id/TestMenuName"
        android:layout_
        android:layout_
        android:layout_margin="5sp"
        android:contentDescription="@string/app_name"
        android:text="@string/test"
        android:textColor="@color/white" />

    </RelativeLayout>

    <Button
        android:id="@+id/TestMenuButton"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_
        android:layout_ />

    </RelativeLayout>

</LinearLayout>

你认为问题出在哪里?

【问题讨论】:

你在这两个地方都使用nexus 4吗?? 尝试使用 fitXy 代替 centerCrop imageView.. 不,我在 AVD 上使用 Galaxy Nexus,但我尝试了一个预览版,但遇到了同样的问题。 imgur.com/4LKgX7l 尝试删除 tools:context="com.xy.xy.HomePage" 然后刷新您的预览,看看它是否与设备上的结果匹配。 【参考方案1】:

尝试像这样在 ImageView 中添加android:scaleType="fitXY"

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    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_
    android:layout_
    android:orientation="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.xy.xy.HomePage">

    <RelativeLayout
        android:layout_
        android:layout_
        android:layout_marginLeft="5sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="5sp">

    <ImageView
        android:id="@+id/TestMenuImage"
        android:layout_
        android:layout_
        android:contentDescription="@string/app_name"
        app:srcCompat="@drawable/bg1"
        android:scaleType="fitXY"/>

    <RelativeLayout
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true"
        tools:background="@color/hbm_text_background">

    <TextView
        android:id="@+id/TestMenuName"
        android:layout_
        android:layout_
        android:layout_margin="5sp"
        android:contentDescription="@string/app_name"
        android:text="@string/test"
        android:textColor="@color/white" />

    </RelativeLayout>

    <Button
        android:id="@+id/TestMenuButton"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_
        android:layout_ />

    </RelativeLayout>

</LinearLayout>

这可能是 Android Studio 中 ImageViews 预览的一个小错误,

希望对你有帮助

【讨论】:

感谢您的帮助,但由于某种原因,RelativeLayout 的背景不可见。 imgur.com/nm58bpp也许你知道为什么不呢?【参考方案2】:

编辑:我看到您已包含样式文件,并且您的应用运行的样式(AppTheme)确实与您的预览相同,因此我认为我们可以排除这是罪魁祸首。

我怀疑这会有所不同,但我注意到您的预览版正在运行 api 27,而您的设备正在运行 api 27。

尝试删除 tools:context="com.xy.xy.HomePage" 看看有没有什么不同。


预览只能显示当前视图。它不知道父视图。 子视图可能有一个限制子视图大小的父视图。假设您的图像设置为 。在这种情况下,预览可能会扩展图像以填充整个宽度,但在运行时,您的图像可能会放置在宽度为“100dp”的父级中,这将导致图像的宽度仅为 100dp。父视图的内边距和边距也会导致问题。

如果这不是问题,则可能是样式问题。我必须查看更多您的主题和样式设置才能确定。您的预览可能会向您显示与您在运行时实际使用的样式/主题不同的样式/主题。

【讨论】:

我也是因为父母的缘故。所以我直接给他打电话:setContentView(R.layout.content_home_page) 我尝试了 26 并且没有工具:context="com.xy.xy.HomePage",但没有任何变化。感谢您的帮助,它很有用,但我想我会使用 fitXY 对不起,我帮不上忙。祝你好运!

以上是关于为啥 Android Studio 预览版中的 Activity 外观与设备上的不同?的主要内容,如果未能解决你的问题,请参考以下文章

Android N 预览版中不允许到 myserver.com 的明文 HTTP 流量

请教一个关于Android Studio布局预览的问题

Android Studio 中导航抽屉预览中的渲染问题

Android Studio 3.2 Preview 中的导航预览不可用

无法在 android studio 3.2.1 版中打开 .xml 文件

在Android Studio中渲染导航抽屉预览中的问题