繁体   English   中英

可绘制不显示

[英]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 =“左|开始”。)

检查图像尺寸。 如果您在实际部署时使用了不必要的大型资产,则即使在设计器中看起来正确,它也可能不会显示。

好 ! 在我的情况下,将MinifyEnabled设置为false ,将rinkResources设置为false ,现在可以正常工作。

我正在从可绘制图像。 它在调试版本中工作得很好,但是在apk的发行版本之后,它有时显示为空白的ImageView。

minifyEnabled false shrinkResources true

**

见截图

**

**之前** **后**

希望这可以帮助任何人。

我遇到了类似的问题,Android Studio 中没有显示可绘制的 png。 删除了文件并将其再次添加到可绘制文件夹中,它对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM