自定义视图中的 ImageView 墙纸未在某些设备上显示

ImageView wallpaper inside custom view is not showing up on some devices

我的自定义视图目前有以下 XML 代码:

<com.pink.jazz.RootView
    android:id="@+id/rootView"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingStart="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingEnd="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MouseActivity" >

    <ImageView
        android:id="@+id/mouse_hole"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/mouse_hole"
        android:visibility="gone"
    />
</com.pink.jazz.RootView>

在某些设备(例如 Samsung Galaxy Tab 4)上,墙纸图像 mouse_hole 显示正常,而在其他设备(例如 Asus Transformer Infinity TF700T)上根本不显示。 mouse_hole 的可见性在我开始游戏时以编程方式更改为可见。我的自定义视图扩展 RelativeLayout.

有谁知道这里出了什么问题吗?

我遇到了类似的问题。尝试将您的图片 mouse_hole 放入不同屏幕尺寸的每个 forder 中:

drawable-hdpi

drawable-ldpi

drawable-mdpi

drawable-xhdpi

drawable-xxhdpi

drawable-xxxhdpi

可能是布局未正确更新。我建议使用 HierarchyViewer 检查 Asus Transformer Infinity 上缺失视图的大小和位置。以下是让层次结构查看器与华硕一起工作可能需要执行的步骤:

  1. 确保您在 Asus 上进行调试
  2. ViewServer Jar 添加到您的项目。
  3. 临时添加库调用以使您的应用程序可用于层次结构查看器,示例代码可以是seen here
  4. 打开层次结构查看器。在 android 工作室中,工具菜单 > Android 子菜单 > Android 设备监视器
  5. 确保您处于层次视图视角
  6. Select 您的应用 运行(显示布局可能需要一些时间)
  7. 使用树节点窗格查找丢失的视图
  8. Select 单击视图,使用“视图属性”选项卡验证宽度和高度的测量尺寸(在测量 属性 部分下找到)是否大于 0
  9. 通过查看布局 属性 部分(mLeft、mTop、mRight、mBottom)验证视图是否位于父视图边界中,这里是 link 给正在查看的人布局属性(尽管他正在追踪性能问题)。