将 xml 膨胀到 LinearLayout 后图像按钮 src 图像消失了

Posted

技术标签:

【中文标题】将 xml 膨胀到 LinearLayout 后图像按钮 src 图像消失了【英文标题】:Image Button src image gone after inflating xml into LinearLayout 【发布时间】:2019-07-16 21:25:42 【问题描述】:

我有一个大致如下布局的 XML:

<merge>
    <LinearLayout (horizontal)>
        <ImageButton/>
        <ImageButton/>
        <ImageButton/>
    <LinearLayout/>

    <TextView/>
<merge/> 

当我将 XML 扩展为自定义垂直线性布局时,一切都按预期进行。每个项目的大小都是正确的,textView 显示得很好。

但是 ImageButtons 现在是完全透明的,尽管我在模拟器中运行我的应用程序时指定了源,但其中没有图像。在 XML 编辑器的设计视图中,我的 ImageButtons 有它们的源图像并且看起来很好。以下是我在 XML 中大致看到的每个 ImageButton:

<ImageButton android:id="@+id/endBtn"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:background="?android:selectableItemBackground"
    android:elevation="12dp"
    android:tint="@color/white"
    app:srcCompat="@drawable/ic_close_black_24dp"
    tools:srcCompat="@drawable/ic_close_black_24dp" />

我在我的自定义 LinearLayout 视图类中使用以下代码来扩展视图:

LayoutInflater.from(context).inflate(R.layout.game_controls_view, this, true);

我错过了什么?

【问题讨论】:

【参考方案1】:

我认为tint 颜色与此处的src 可绘制对象相混淆。我建议删除tint 颜色并检查图像是否正在显示。

如果这不起作用,请尝试删除app:srcCompat 并仅将tools:srcCompat 用于ImageButton,如下所示。

<ImageButton
    android:id="@+id/endBtn"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:background="?android:selectableItemBackground"
    android:elevation="12dp"
    android:tint="@android:color/white"
    tools:srcCompat="@drawable/ic_launcher_background" />

【讨论】:

感谢您的建议,但还是一样。【参考方案2】:

您正在使用 app:srcCompact 使用矢量可绘制对象。因此您需要将此行添加到您的 build.gradle 文件中。

defaultConfig 
    ...

    vectorDrawables.useSupportLibrary = true // This line here

第二个选项是使用 android:src 来引用矢量绘图。

【讨论】:

【参考方案3】:
Use this
<ImageButton android:id="@+id/endBtn"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:background="?android:selectableItemBackground"
        android:elevation="12dp"
        app:srcCompat="@drawable/ic_launcher_background"
        tools:srcCompat="@drawable/ic_launcher_background"
        tools:ignore="VectorDrawableCompat" />


  [1]: https://i.stack.imgur.com/0w8aj.png

【讨论】:

以上是关于将 xml 膨胀到 LinearLayout 后图像按钮 src 图像消失了的主要内容,如果未能解决你的问题,请参考以下文章

循环中的多个膨胀视图

如果将 Webview 作为子项,则布局 onClick 事件不起作用

如何通过仅膨胀一次将相同的视图多次添加到父级

将标签和侦听器添加到多次膨胀的 XML 的视图中

如何动态添加多个TextView到main.xml中定义的LinearLayout

将 android:layoutAnimation 添加到 LinearLayout 会导致 FC