[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
}
}
}
당신의 확장 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);
}
}
답변
비슷한 문제가 있었고 Jared Burrows의 답변 에서 모든 단계를 수행 한 후에도 문제가 해결되지 않았습니다.
내 레이아웃 파일 내의 “app”네임 스페이스가 다음과 같이 설정되어있는 것으로 나타났습니다.
xmlns:app="http://schemas.android.com/tools"
대신에:
xmlns:app="http://schemas.android.com/apk/res-auto"
이것을 변경 한 후 문제가 수정되었습니다.
답변
넣다 다른 사람이 문제로 실행 및 사용 androidx을 한 후 사용해보십시오 androidx.appcompat.widget.AppCompatImageView을
답변
요약하자면:
-
모듈 (build.gradle)에 벡터 드로어 블 지원 배치
defaultConfig { vectorDrawables.useSupportLibrary = true }
-
android:src="@drawable/icon"
사용 대신app:srcCompat="@drawable/icon"
-
확인 당신을
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 대신 사용했고 제대로 작동했습니다!