本文介绍了Android 矢量可绘制应用程序:srcCompat 不显示图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用支持库在 android kitkat 上显示矢量图像.当我在模拟器上测试我的应用程序时,我看不到任何这些图像.我为 android 棒棒糖及以上版本制作了一个单独的布局,它工作得很好(我想是因为我使用的是 src 属性而不是 srcCompat 这是我使用支持的代码图书馆

I'm using support library to show vector images on android kitkat. When I test my app on emulater I don't see any of these images. I made a separate layout for android lollipop and above and it workd perfectly (I think because I'm using src attribute instead of srcCompatHere's the code where I'm usign support library

<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 预览窗口中看到了图像.

and it's strange because I see the images on android studio preview window.

推荐答案

原答案

在布局中使用 android.support.v7.widget.AppCompatImageView 而不是 ImageView,如下所示:

Original Answer

Use android.support.v7.widget.AppCompatImageView instead of ImageView in your layout, like this:

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

查看 AppCompatImageView 文档这里app:srcCompat 这里.

See the AppCompatImageView docs here and app:srcCompat here.

设置您的 build.gradle

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

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

使用 AppCompatActivity

public final class MainActivity extends AppCompatActivity {
  @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
  }
}

使用 app:srcCompat 时,请确保布局中有正确的声明:

When using app:srcCompat, make sure to have the correct declarations in your layout:

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

可选(警告:请阅读文档):setCompatVectorFromResourcesEnabled 在您的 Application

Optional (warning: please read docs): setCompatVectorFromResourcesEnabled in your Application class

public class App extends Application {

  @Override public void onCreate() {
    super.onCreate();

    // Make sure we use vector drawables
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
  }
}

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

这篇关于Android 矢量可绘制应用程序:srcCompat 不显示图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 03:50