Android:Drawable没有显示出来

时间:2011-09-19 17:19:24

标签: android image button

我有一个相当简单的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" >
</TextView>

<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" >
</SeekBar>

<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" >
    </ImageButton>

    <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>

    <Button
        android:id="@+id/navigation_cancel_button"
        android:layout_width="75dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="@string/cancel" >
    </Button>
</LinearLayout>

图片@drawable/chapter_select是一个相当小的(41 * 41)png文件,位于res / drawable文件夹中。

7 个答案:

答案 0 :(得分:13)

似乎这是android的一个错误,有时可绘制文件夹中的第一个图像不显示。在drawable文件夹中添加了一个名为aaaa.png的虚拟图像,问题解决了。在这里找到答案:ImageButton does not display a particular drawable

答案 1 :(得分:5)

有同样的问题并通过删除所有特殊字符来解决它。就我而言,它是破折号 - &#39; - &#39;在文件名中:

{{1}}。

答案 2 :(得分:2)

尝试将图像放在drawable-hdpi和drawable-mdpi文件夹中 取决于你运行app的设备,在这些文件夹中搜索图像......

但是放入drawable意味着图像应该随处可用,但有些时候(取决于你的清单设置)这可能不是真的,我的意思是你可以改变兼容模式。

您也可以在运行时尝试使用dinamically将图像设置为视图

iv.setImageResource(R.drawable.somethig);

答案 3 :(得分:0)

我的情况很奇怪。在将FireBase Crash报告集成到我的应用程序之前,一切正常。

我刚刚添加了编译'com.google.firebase:firebase-crash:11.0.1'&amp; DrawableLeft消失。当我浏览xml时,发现了一个警告(如下所示)。

添加了android:drawableStart&amp;问题消失了。

我仍然想知道FireBase Crash报告的关系。

  

使用左/右而不是开始/结束属性使用重力#LEFT   渲染布局时,Gravity#RIGHT会导致问题   文本从右向左流动的语言环境。使用Gravity#START和   重力#END代替。

     

同样,在XML gravity和layout_gravity属性中,使用start   而不是离开。对于诸如paddingLeft和的XML属性   layout_marginLeft,使用paddingStart和layout_marginStart。

     

注意:如果你的minSdkVersion小于17,你应该添加两个   较旧的左/右属性以及新的开始/右属性。   在较旧的平台上,不支持RTL和开始/右侧   属性是未知的,因此被忽略,你需要更旧   左/右属性。

     

有一个单独的lint检查可以捕获这种类型的错误。   (注意:对于Gravity#LEFT和Gravity#START,您可以使用这些常量   即使是针对较旧的平台,因为起始位掩码是一个   左位掩码的超集。因此,您可以使用gravity =“start”   而不是gravity =“left | start”。)

答案 4 :(得分:0)

检查图像大小。如果您在实际部署时使用了不必要的大型资产,尽管设计师看起来不正确,但可能无法显示。

答案 5 :(得分:0)

好!就我而言,设置 MinifyEnabled false shrinkResources false 现在可以正常工作。

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

minifyEnabled false shrinkResources true

**

  

查看屏幕截图

**

**Before** **After**

希望这对任何人都有帮助。

答案 6 :(得分:0)

原因之一是

如果您将Vector文件用作可绘制的左侧或右侧,则必须使用。

  

android.support.v7.widget.AppCompatButton

代替

  

按钮

在我看来,像Button,Textview这样的简单视图不支持将Vector文件作为Drawable left right