Android矢量drawable app:srcCompat没有显示图像

时间:2016-07-06 10:38:04

标签: android android-support-library

我使用支持库在android kitkat上显示矢量图像。当我在emulater上测试我的应用程序时,我没有看到任何这些图像。我为Android棒棒糖及以上版本制作了一个单独的布局,它完美地工作(我认为因为我使用src属性而不是srcCompat这里是我所在的代码使用支持库

<LinearLayout android:layout_alignParentBottom="true"
android:id="@+id/lake_detail"
android:background="@drawable/my_fishing_plan_footer_line"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="90dp"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<RelativeLayout
            android:layout_marginRight="3dp"
            android:id="@+id/fire_logo"
            android:layout_width="20sp"
            android:layout_height="20sp">

            <ImageView
                android:tint="#d74313"
                app:srcCompat="@drawable/circle_icon"
                android:layout_width="30sp"
                android:layout_height="30sp" />

            <ImageView
                android:layout_centerVertical="true"
                android:layout_centerHorizontal="true"
                app:srcCompat="@drawable/lauzaviete"
                android:layout_width="25dp"
                android:layout_height="25dp" />

        </RelativeLayout>

它很奇怪,因为我在android studio预览窗口看到了这些图片。

8 个答案:

答案 0 :(得分:165)

原始答案

在布局中使用var recordsNotFound = File1Lines.Keys.Except(FoundRecords); foreach (var name in recordsNotFound) { // look up item in the dictionary to report not found } 代替android.support.v7.widget.AppCompatImageView,如下所示:

ImageView

请参阅<LinearLayout ... xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <android.support.v7.widget.AppCompatImageView android:tint="#d74313" app:srcCompat="@drawable/circle_icon" android:layout_width="30sp" android:layout_height="30sp" /> <android.support.v7.widget.AppCompatImageView android:layout_centerVertical="true" android:layout_centerHorizontal="true" app:srcCompat="@drawable/lauzaviete" android:layout_width="25dp" android:layout_height="25dp" /> </LinearLayout> 文档hereAppCompatImageView here

另外,请确保执行以下操作:

设置app:srcCompat

build.gradle

文档:https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html#com.android.build.gradle.internal.dsl.VectorDrawablesOptions:useSupportLibrary

使用android { defaultConfig { vectorDrawables { useSupportLibrary = true } } }

扩展您的Activity
AppCompatActivity

使用public final class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } 时,请确保在布局中使用正确的声明:

app:srcCompat

可选(警告:请阅读文档):<LinearLayout ... xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> ... </LinearLayout> 课程中的setCompatVectorFromResourcesEnabled

Application

文档: https://developer.android.com/reference/android/support/v7/app/AppCompatDelegate.html#setCompatVectorFromResourcesEnabled(boolean)

答案 1 :(得分:14)

我遇到了类似问题,在完成Jared Burrows's answer的所有步骤后,问题仍未解决。

原来那个&#34; app&#34;我的布局文件中的命名空间设置为:

xmlns:app="http://schemas.android.com/tools"

而不是:

xmlns:app="http://schemas.android.com/apk/res-auto"

更改此问题后,问题已解决

答案 2 :(得分:1)

实施和app:srcCompact,然后您可以在ImageView

上使用它

implementation 'com.android.support:appcompat-v7:28.0.0'

确保实现正确的版本。

然后在您的build.gradleandroid.defaultConfig.vectorDrawables.useSupportLibrary = true

defaultConfig {

    //...

    vectorDrawables {
        useSupportLibrary true
    }
}

答案 3 :(得分:1)

问题也出在我的代码上。 解决方案:随着Android升级到Androidx Artifacts, 我用的不是常规,而是有效!

答案 4 :(得分:0)

使用:

android:background="@drawable/circle_icon"

而不是:

app:srcCompat="@drawable/circle_icon"

答案 5 :(得分:0)

此外,请确保矢量可绘制对象位于drawable中,而不位于drawable-anydpi中。

如果图形位于drawable-anydpi文件夹中,我经常会遇到问题。

答案 6 :(得分:0)

总结:

  1. 在模块中添加矢量可绘制支持(build.gradle)

    defaultConfig {           
         vectorDrawables.useSupportLibrary = true
     }
    
  2. 使用android:src="@drawable/icon"代替app:srcCompat="@drawable/icon"

  3. 请确保没有此步骤的Activity extends AppCompatActivity不能使用app:srcCompat

  4. 显示矢量图像

答案 7 :(得分:0)

万一其他人遇到此问题并正在使用 androidx ,然后尝试使用 androidx.appcompat.widget.AppCompatImageView