Android vector drawable app:srcCompat not showing images

前端 未结 8 663
误落风尘
误落风尘 2020-11-28 04:38

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 lol

相关标签:
8条回答
  • 2020-11-28 05:01

    In summary:

    1. Put vector drawable support in your module (build.gradle)

      defaultConfig {           
           vectorDrawables.useSupportLibrary = true
       }
      
    2. Instead of android:src="@drawable/icon" use app:srcCompat="@drawable/icon"

    3. Make sure your Activity extends AppCompatActivity without this step is not possible to show vector image with app:srcCompat

    0 讨论(0)
  • 2020-11-28 05:06

    The problem was with my Code as well. Solution: As Android is upgrading to Androidx Artifacts, I used Instead of Regular and it Worked!

    0 讨论(0)
  • 2020-11-28 05:07

    I had a similar issue and after following all steps from Jared Burrows's answer the problem was not solved.

    Turns out that the "app" namespace inside my layout file was set as:

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

    instead of:

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

    After changing this the problem was fixed

    0 讨论(0)
  • 2020-11-28 05:09

    Implement and app:srcCompact and then you can use it on the ImageView

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

    Make sure you implement the right version.

    Then in your build.gradle set android.defaultConfig.vectorDrawables.useSupportLibrary = true

    defaultConfig {
    
        //...
    
        vectorDrawables {
            useSupportLibrary true
        }
    }
    
    0 讨论(0)
  • 2020-11-28 05:12

    use:

    android:background="@drawable/circle_icon"
    

    instead of:

    app:srcCompat="@drawable/circle_icon"
    
    0 讨论(0)
  • 2020-11-28 05:21

    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>
    

    See the AppCompatImageView docs here and app:srcCompat here.

    Also, make sure to do the following:

    Setup your build.gradle

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

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

    Extend your Activity with AppCompatActivity

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

    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>
    

    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);
      }
    }
    

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

    0 讨论(0)
提交回复
热议问题