[英]Drawable not showing up
我有一个相当简单的 xml 文件,其中有一个图像按钮。 该图像在图形布局 xml 设计器上显示良好,在我运行开发构建时显示良好,但是一旦我创建签名的 apk 文件并运行它,图像就不再显示。 它只是一个空按钮。 我想不出原因,有什么想法吗? xml 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/navigation_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/navigation_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="TextView"
android:textAppearance="?android:attr/textAppearanceLarge" />
<SeekBar
android:id="@+id/navigation_seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:padding="5dp" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp" >
<ImageButton
android:id="@+id/part_select_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/chapter_select" />
<Button
android:id="@+id/navigation_ok_button"
android:layout_width="75dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/ok" />
<Button
android:id="@+id/navigation_cancel_button"
android:layout_width="75dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/cancel" />
</LinearLayout>
</LinearLayout>
图片@drawable/chapter_select
是一个相当小的 (41*41) png 文件,位于 res/drawable 文件夹中。
似乎这是android的一个错误,有时可绘制文件夹中的第一个图像没有显示。 向可绘制文件夹添加了一个名为aaaa.png的虚拟图像,问题得以解决。 在这里找到答案: ImageButton不显示特定的可绘制对象
发生了相同的问题,并通过删除所有特殊字符解决了该问题。 在我的情况下,文件名中的破折号“-”:
background-720.png => background.png
。
原因之一是
如果将Vector
文件用作可绘制的左侧或右侧,则必须使用。
android.support.v7.widget.AppCompatButton
代替
纽扣
像Button,Textview
这样的简单视图在我的情况下不支持Vector
文件作为Drawable left right
尝试将图像放在drawable-hdpi和drawable-mdpi文件夹中,具体取决于您运行应用的设备,在这些文件夹中搜索图像...
但是放入drawable意味着图像应该随处可见,但是某些主题(取决于清单设置)可能不正确,我的意思是可以切换兼容模式。
您也可以在运行时尝试尝试将图像设置为视图
iv.setImageResource(R.drawable.somethig);
我的情况很奇怪。在将FireBase Crash报告集成到我的应用程序之前,一切都是正确的。
我刚刚添加了编译'com.google.firebase:firebase-crash:11.0.1'
和DrawableLeft都消失了 。当我通过xml时,注意到一个警告(在下面的行中)。
因此添加了android:drawableStart
&问题。
我仍然想知道FireBase崩溃报告与此之间的关系。
使用左/右而不是开始/结束属性使用Gravity#LEFT和Gravity#RIGHT可能会导致在文本从右向左流动的语言环境中呈现布局时导致问题。 请改用Gravity#START和Gravity#END。
同样,在XMLgravity和layout_gravity属性中,使用start而不是left。 对于paddingLeft和layout_marginLeft等XML属性,请使用paddingStart和layout_marginStart。
注意:如果您的minSdkVersion小于17,则应同时添加较旧的left / right属性和新的start / right属性。 在较旧的平台上,其中不支持RTL并且start / right属性是未知的,因此被忽略,因此您需要较旧的left / right属性。
有一个单独的lint检查可以捕获这种类型的错误。 (注意:对于Gravity#LEFT和Gravity#START,即使在定位较旧的平台时也可以使用这些常量,因为起始位掩码是左侧位掩码的超集。因此,可以使用gravity =“ start”而不是gravity =“左|开始”。)
检查图像尺寸。 如果您在实际部署时使用了不必要的大型资产,则即使在设计器中看起来正确,它也可能不会显示。
我遇到了类似的问题,Android Studio 中没有显示可绘制的 png。 删除了文件并将其再次添加到可绘制文件夹中,它对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.