[android] Android 벡터 드로어 블 앱 : srcCompat에 이미지가 표시되지 않음

Android kitkat에 벡터 이미지를 표시하기 위해 지원 라이브러리를 사용하고 있습니다. 에뮬레이터에서 내 앱을 테스트 할 때 이러한 이미지가 표시되지 않습니다. 나는 안드로이드 사탕과 위에 별도의 레이아웃을 만든 그리고 내가 사용하고 있기 때문에 생각 (완벽 workd src속성을 대신 srcCompat여기에 내가 usign 지원 라이브러리를 해요 코드입니다

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

여기여기 에서 AppCompatImageView문서를 참조 하십시오 .app:srcCompat

또한 다음을 수행하십시오.

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

당신의 확장 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클래스

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)


답변

비슷한 문제가 있었고 Jared Burrows의 답변 에서 모든 단계를 수행 한 후에도 문제가 해결되지 않았습니다.

내 레이아웃 파일 내의 “app”네임 스페이스가 다음과 같이 설정되어있는 것으로 나타났습니다.

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

대신에:

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

이것을 변경 한 후 문제가 수정되었습니다.


답변

넣다 다른 사람이 문제로 실행 및 사용 androidx을 한 후 사용해보십시오 androidx.appcompat.widget.AppCompatImageView을


답변

요약하자면:

  1. 모듈 (build.gradle)에 벡터 드로어 블 지원 배치

    defaultConfig {
         vectorDrawables.useSupportLibrary = true
     }
    
  2. android:src="@drawable/icon"사용 대신app:srcCompat="@drawable/icon"

  3. 확인 당신을 Activity extends AppCompatActivity이 단계없이하는 벡터 이미지를 표시 할 수 없습니다app:srcCompat


답변

사용하다:

android:background="@drawable/circle_icon"

대신에:

app:srcCompat="@drawable/circle_icon"


답변

구현하고 app:srcCompact다음에서 사용할 수 있습니다.ImageView

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

올바른 버전을 구현했는지 확인하십시오.

그런 다음 build.gradle세트에서android.defaultConfig.vectorDrawables.useSupportLibrary = true

defaultConfig {

    //...

    vectorDrawables {
        useSupportLibrary true
    }
}


답변

문제는 내 코드에서도 발생했습니다. 솔루션 : Android가 Androidx Artifacts로 업그레이드함에 따라 Regular 대신 사용했고 제대로 작동했습니다!