将 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 事件不起作用