【问题标题】:ImageView wallpaper inside custom view is not showing up on some devices自定义视图中的 ImageView 壁纸未在某些设备上显示
【发布时间】:2015-12-24 19:01:16
【问题描述】:

我的自定义视图目前有以下 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>

在某些设备(例如三星 Galaxy Tab 4)上,壁纸图片mouse_hole 显示良好,而在其他设备(例如华硕 Transformer Infinity TF700T)上则完全不显示。当我开始我的游戏时,mouse_hole 的可见性正在以编程方式更改为可见。我的自定义视图扩展了RelativeLayout

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

【问题讨论】:

  • 这款华硕平板电脑旨在惩罚人们。这不是它的第一个问题。这么说,你能发布代码来切换mouse_hole的可见性吗?
  • mouse_hole 可绘制有多大?
  • Re: Scana 实际尺寸为1920x1200,但我尝试将其转换为位图(以节省内存)并将其缩放到1280x800,它仍然不显示。
  • 可以发布一些代码以获得更多想法吗?
  • 您是否尝试过使用相对布局,它是否适用?那么错误就在您的布局中。您应该提供您的自定义布局和更改可见性的代码。

标签: android imageview android-custom-view wallpaper


【解决方案1】:

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

可绘制-hdpi

可绘制的 ldpi

可绘制的mdpi

可绘制-xhdpi

drawable-xxhdpi

drawable-xxxhdpi

【讨论】:

    【解决方案2】:

    可能是布局没有正确更新。我建议使用 HierarchyViewer 检查 Asus Transformer Infinity 上缺失视图的大小和位置。以下是让 Hierarchy Viewer 与 Asus 配合使用可能需要执行的步骤:

    1. 确保您在华硕上进行调试
    2. ViewServer Jar 添加到您的项目中。
    3. 临时添加库调用,使您的应用可用于层次结构查看器,示例代码可以是seen here
    4. 打开层次结构查看器。在 android studio 中是 Tools Menu > Android Sub Menu > Android Device Monitor
    5. 确保您处于 Hierarchy View Perspective 中
    6. 选择您正在运行的应用程序(布局显示可能需要一点时间)
    7. 使用树节点窗格查找丢失的视图
    8. 通过单击选择视图,使用“视图属性”选项卡验证宽度和高度的测量尺寸(位于“测量属性”部分下)是否大于 0
    9. 通过查看布局属性部分(mLeft、mTop、mRight、mBottom)来验证视图是否放置在父视图边界中,这是查看布局属性的人的link(尽管他正在跟踪降低性能问题)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 2016-04-14
      • 2018-08-28
      • 2018-03-23
      • 2014-10-22
      相关资源
      最近更新 更多