Sử dụng Bản vẽ vector cho android trên sự cố trước Lollipop


91

Tôi đang sử dụng vector có thể vẽ trong Android trước Lollipop và đây là một số thư viện và phiên bản công cụ của tôi:

  • Android Studio: 2.0
  • Plugin Android Gradle: 2.0.0
  • Công cụ xây dựng: 23.0.2
  • Thư viện hỗ trợ Android: 23.3.0

Tôi đã thêm thuộc tính này trong cấp ứng dụng của mình Build.Gradle

android {  
  defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
   }  
}

Cũng cần nhắc lại rằng tôi sử dụng thêm một tệp có thể vẽ như LayerDrawable (layer_list) như đã nêu trong Blog chính thức của Android ( liên kết tại đây ) để thiết lập các tệp có thể kéo cho các tệp có thể vẽ được vectơ bên ngoàiapp:srcCompat

<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/search"/>
</level-list>

Bạn sẽ tìm thấy tham chiếu trực tiếp các vector có thể vẽ bên ngoài ứng dụng: srcCompat sẽ không thành công trước Lollipop. Tuy nhiên, AppCompat hỗ trợ tải các tệp có thể kéo vectơ khi chúng được tham chiếu trong một vùng chứa có thể kéo khác như StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable và RotateDrawable. Bằng cách sử dụng này gián tiếp , bạn có thể sử dụng drawables vector trong những trường hợp như android TextView của: drawableLeft thuộc tính, mà thường không có khả năng hỗ trợ drawables vector.

Khi tôi sử dụng app:srcCompatmọi thứ hoạt động tốt, nhưng khi tôi sử dụng:

android:background
android:drawableLeft
android:drawableRight
android:drawableTop
android:drawableBottom

trên ImageView, ImageButton, TextViewhoặc EditTexttrước khi Lollipop, nó ném một Nguyện vọng:

Caused by: android.content.res.Resources$NotFoundException: File res/drawable/search_toggle.xml from drawable resource ID #0x7f0200a9

Có thể trùng lặp của tính tương thích vector Android
Adam Hurwitz

Để xem cách sử dụng VectorDrawable với drawableLeft, drawableRight, drawableTop, drawableBottom kiểm tra Câu trả lời này
Behzad Bahmanyar

Bạn có thể kiểm tra câu trả lời của tôi ở đây? stackoverflow.com/a/40523623/2557258
Yazon2006

Trong trường hợp của tôi, các tệp có thể kéo vactor không nằm trong gói phù hợp (chế độ xem dự án mở) hoặc câu trả lời ban đầu tại đây stackoverflow.com/a/35836318/2163045
murt

Câu trả lời:


102

CẬP NHẬT MỚI NHẤT - Tháng 6 năm 2019

Thư viện Hỗ trợ đã thay đổi một chút so với câu trả lời ban đầu. Giờ đây, ngay cả plugin Android dành cho Gradle cũng có thể tự động tạo PNG tại thời điểm xây dựng. Vì vậy, dưới đây là hai cách tiếp cận mới sẽ hoạt động trong những ngày này. Bạn có thể tìm thêm thông tin tại đây:

Thế hệ PNG

Gradle có thể tự động tạo hình ảnh PNG từ nội dung của bạn tại thời điểm xây dựng. Tuy nhiên, trong cách tiếp cận này, không phải tất cả các phần tử xml đều được hỗ trợ . Giải pháp này rất tiện lợi vì bạn không cần phải thay đổi bất kỳ điều gì trong mã hoặc trong build.gradle của mình. Chỉ cần đảm bảo rằng bạn đang sử dụng Android Plugin 1.5.0 trở lênAndroid Studio 2.2 trở lên .

Tôi đang sử dụng giải pháp này trong ứng dụng của mình và hoạt động tốt. Không cần cờ build.gradle bổ sung . Không cần hack. Nếu bạn truy cập / build / created / res / pngs / ..., bạn có thể thấy tất cả các PNG đã tạo.

Vì vậy, nếu bạn có một số biểu tượng đơn giản (vì không phải tất cả các phần tử xml đều được hỗ trợ), giải pháp này có thể phù hợp với bạn. Chỉ cần cập nhật Android Studio và plugin Android của bạn cho Gradle.

Thư viện hỗ trợ

Có thể, đây là giải pháp sẽ làm việc cho bạn. Nếu bạn đến đây, điều đó có nghĩa là Android Studio của bạn không tự động tạo PNG. Vì vậy, ứng dụng của bạn đang bị lỗi.

Hoặc có thể, bạn không muốn Android Studio tạo bất kỳ PNG nào.

Khác với "Tự động tạo PNG" hỗ trợ tập hợp con phần tử XML, giải pháp này hỗ trợ tất cả các thẻ xml. Vì vậy, bạn có đầy đủ hỗ trợ cho vector có thể vẽ của bạn.

Trước tiên, bạn phải cập nhật build.gradle của mình để hỗ trợ nó:

android {
  defaultConfig {
    // This flag will also prevents Android Studio from generating PNGs automatically
    vectorDrawables.useSupportLibrary = true
  }
}

dependencies {
  // Use this for Support Library
  implementation 'com.android.support:appcompat-v7:23.2.0' // OR HIGHER

  // Use this for AndroidX
  implementation 'androidx.appcompat:appcompat:1.1.0' // OR HIGHER
}

Và sau đó, sử dụng app:srcCompatthay vì android:srctrong khi tải VectorDrawables. Đừng quên điều này.

Đối với TextView, nếu bạn đang sử dụng androidxphiên bản của Thư viện hỗ trợ, bạn có thể sử dụng app:drawableLeftCompat(hoặc bên phải, trên cùng, dưới cùng) thay vìapp:drawableLeft

Trong trường hợp CheckBox/ RadioButton, sử dụng app:buttonCompatthay vì android:button.

Nếu bạn không sử dụng các androidxphiên bản của Thư viện hỗ trợ và bạn minSdkVersion17trở lên hoặc sử dụng một nút, bạn có thể cố gắng thiết lập trình qua

Drawable icon = AppCompatResources.getDrawable(context, <drawable_id>);
textView.setCompoundDrawablesWithIntrinsicBounds(<leftIcon>,<topIcon>,<rightIcon>,<bottomIcon>);

CẬP NHẬT - Tháng 7/2016

Họ đã bật lại VectorDrawable đó trong
Thư viện hỗ trợ Android 23.4.0

Đối với người dùng AppCompat , chúng tôi đã thêm một API chọn tham gia để bật lại hỗ trợ Vector Drawables từ tài nguyên (hành vi được tìm thấy trong 23.2) thông qua AppCompatDelegate.setCompatVectorFromResourcesEnabled (true) - hãy nhớ rằng điều này vẫn có thể gây ra sự cố với việc sử dụng bộ nhớ và sự cố cập nhật các phiên bản Cấu hình, do đó lý do tại sao nó bị tắt theo mặc định.

Có thể , build.gradlecài đặt hiện đã lỗi thời và bạn chỉ cần kích hoạt nó trong các hoạt động thích hợp (tuy nhiên, cần phải kiểm tra).

Bây giờ, để kích hoạt nó, bạn phải làm:

public class MainActivity extends AppCompatActivity {
    static {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }

    ...
}

Câu trả lời gốc - Tháng 4 năm 2016

Tôi nghĩ rằng điều này đang xảy ra vì Hỗ trợ Vector đã bị tắt trong phiên bản thư viện mới nhất: 23.3.0

Theo BÀI ĐĂNG này :

Đối với người dùng AppCompat, chúng tôi đã quyết định xóa chức năng cho phép bạn sử dụng vector có thể vẽ từ tài nguyên trên thiết bị trước Lollipop do các vấn đề được tìm thấy trong quá trình triển khai ở phiên bản 23.2.0 / 23.2.1 (ISSUE 205236) . Sử dụng ứng dụng: srcCompat và setImageResource () tiếp tục hoạt động.

Nếu bạn truy cập sự cố ISSUE 205236 , có vẻ như chúng sẽ bật trong tương lai nhưng sự cố bộ nhớ sẽ không sớm được khắc phục:

Trong bản phát hành tiếp theo, tôi đã thêm một API chọn tham gia, nơi bạn có thể bật lại hỗ trợ VectorDrawable đã bị xóa. Nó đi kèm với các cảnh báo tương tự như trước đây (sử dụng bộ nhớ và các vấn đề với cập nhật Cấu hình).

Tôi đã có một vấn đề tương tự. Vì vậy, trong trường hợp của tôi, tôi đã hoàn nguyên tất cả các biểu tượng sử dụng vector có thể vẽ từ tài nguyên sang hình ảnh PNG (vì sự cố bộ nhớ sẽ tiếp tục xảy ra ngay cả khi họ cung cấp tùy chọn để bật lại).

Tôi không chắc liệu đây có phải là lựa chọn tốt nhất hay không, nhưng theo ý kiến ​​của tôi, nó khắc phục được tất cả các sự cố.


1
Cảm ơn @Guilherme P. nhưng tại sao bạn không xóa vectorDrawables.useSupportLibrary = trueperoperty để quay lại bật tạo pngs tại thời điểm xây dựng ?
Behzad Bahmanyar

1
Điều đó đã bị vô hiệu hóa trong phiên bản mới nhất v23.3.0 do sự cố bộ nhớ. Bằng cách này, họ không thể tạo png trong thời gian chạy ... Đó là lý do tại sao trong lỗi logcat, họ in: vectơ thẻ không xác định (hoặc một cái gì đó tương tự).
W0rmH0le

4
Đây là hướng dẫn chọn tham gia plus.google.com/+AndroidDevelopers/posts/B7QhFkWZ6YX . Rất tiếc, VectorDrawables vẫn không hoạt động trên thiết bị Pre-Lollipop. Tôi đang sử dụng Thư viện hỗ trợ 23.4.0 và có cả 'createdDensities = []' và 'vectorDrawables.useSupportLibrary = true' được gọi trong defaultConfig {}.
Adam Hurwitz

1
@AdamHurwitz Tôi đã cập nhật câu trả lời .. Có vẻ như nó đã được bật lại .. Tuy nhiên, bạn phải bật nó theo cách khác ngay bây giờ.
W0rmH0le

1
@juztcode Bạn nói đúng. Bạn nên sử dụng 'androidx.appcompat: appcompat: 1.1.0'
W0rmH0le

63

Tôi đã từng gặp vấn đề tương tự. Nhưng thực hiện nhiều nghiên cứu và phát triển tôi đã có câu trả lời.

Đối với việc sử dụng Imageview và ImageButton, app:srcCompat="@drawable/...." và cho các chế độ xem khác như Button, Textview, thay vì sử dụng "drawableLeft/right..."trong XML, hãy chỉ định các chương trình có thể kéo được như sau:

button.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(mContext,R.drawable.ic_share_brown_18dp), null, null, null);

Và sử dụng "AppCompatResources" để có được bản vẽ được.



39

Câu trả lời từ Guillherme P là khá tuyệt vời. Chỉ để thực hiện một cải tiến nhỏ, bạn không cần phải thêm dòng đó trong mọi hoạt động, nếu bạn thêm dòng đó một lần trong lớp Ứng dụng, nó cũng sẽ hoạt động.

public class App extends Application {

static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

HÃY NHỚ: Bạn vẫn cần kích hoạt việc sử dụng thư viện hỗ trợ trong gradle:

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

Ngoài ra, hãy đảm bảo rằng bạn đang sử dụng phiên bản thư viện hỗ trợ lớn hơn v23.4, khi Google bổ sung hỗ trợ Hộp chứa có thể vẽ cho VectorDrawables ( ghi chú phát hành )

Cập nhật

Và để thay đổi mã:

  1. Đảm bảo cập nhật cho app:srcCompatmọi nơi chấp nhận android:srcthuộc tính (IDE sẽ cảnh báo bạn nếu nó không hợp lệ như đối với <bitmap>thẻ).
  2. Đối với drawableLeft, drawableStart, drawableRight, drawableEndthuộc tính được sử dụng trong TextViewvà quan điểm tương tự, bạn sẽ phải cài đặt chúng theo chương trình cho bây giờ. Một ví dụ về cài đặt drawableStart:

    Drawable drawable = AppCompatResources.getDrawable(
            getContext(),
            R.drawable.your_vector_drawable);
    
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        textView.setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null);
    }

hãy nhớ rằng bạn cần phải có ON việc sử dụng các thư viện hỗ trợ cho drawables vector trong gradle: vectorDrawables.useSupportLibrary = true
Benny

2
Vâng. Tôi biết. Nhưng cần có một trình bao bọc để làm cho các tệp có thể kéo được vectơ hoạt động như các tệp có thể kéo được cho TexView, vì vậy câu trả lời này là không đầy đủ.
cesards

1
Câu trả lời chính xác. Nó đặc biệt tốt cho các ứng dụng có tất cả các hoạt động của nó được mở rộng từ hoạt động cơ sở tùy chỉnh.
Hong

14

Tôi đã từng gặp vấn đề tương tự. Và sửa chữa nó bằng cách loại bỏ

vectorDrawables.useSupportLibrary = true

Phiên bản mục tiêu của tôi là 25 và thư viện hỗ trợ là

 compile 'com.android.support:appcompat-v7:25.3.1'

1
điều này đã làm việc cho tôi. Cảm ơn. Tôi chỉ lấy ra rằngvectorDrawables.useSupportLibrary = true
Android Tầm thường

Tôi nghĩ đây không phải là cách thích hợp để làm điều đó, Dù bằng cách nào thì tôi cũng đã từ bỏ câu trả lời của bạn. !!
Harish Reddy

Cảm ơn bạn. t hoạt động cho ứng dụng của tôi. Tất cả các tệp có thể vẽ vector vẫn hoạt động nếu nó đã bị xóa. Ứng dụng sử dụng com.android.support:appcompat-v7:28.0.0
Hong

10

VectorDrawables trên pre-lollipop sẽ hoạt động tốt mà không cần sử dụng

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);

Nếu bạn muốn sử dụng VectorDrawables bên trong ImageViews, bạn có thể sử dụng thuộc tính srcCompatvà nó sẽ hoạt động, nhưng bên trong Buttons hoặc TextViews thì không , vì vậy bạn cần phải bọc Drawable thành InsetDrawable hoặc LayerDrawable. Có một thủ thuật khác mà tôi đã phát hiện ra, nếu bạn đang sử dụng liên kết dữ liệu, bạn có thể thực hiện điều này:

android:drawableLeft="@{@drawable/vector_ic_access_time_24px}"
android:drawableStart="@{@drawable/vector_ic_access_time_24px}"

Điều đó sẽ hoạt động một cách kỳ diệu, tôi chưa điều tra những gì đang xảy ra đằng sau hậu trường, nhưng tôi đoán TextView đang sử dụng phương thức getDrawable từ AppCompatResources hoặc tương tự.


Làm thế nào để đặt hình ảnh vectơ trong bộ chọn?
Tushar Gogna

sau khi thiết lập vectorDrawables.useSupportLibrary = true trong gradle default và AppCompatDelegate.setCompatVectorFromResourcesEnabled (true); trong hoạt động khi tạo Để tránh sự cố với android: drawableleft trong Textview , hãy đặt drawble trái thành textview theo lập trình cho examlple: textview.setCompoundDrawablesWithIntrinsicBounds (R.drawable.movie, 0, 0, 0);
Afjalur Rahman Rana

7

Rất nhiều R & d, cuối cùng đã nhận được giải pháp này cho sự cố trên các thiết bị tiền kẹo mút.

Đối với Chế độ xem hình ảnh

  • sử dụng ứng dụng: srcCompat thay vì android: src

Đối với TextView / EditText

  • Loại bỏ drawableleft , drawableright .... và đặt từ mã java có thể vẽ được.

txtview.setCompoundDrawablesWithIntrinsicBounds (AppCompatResources.getDrawable (EventDetailSinglePage.this, R.drawable.ic_done_black_24_n), null, null, null);

Đối với Build.gradle

vectorDrawables.useSupportLibrary = true


1
Đó là giải pháp duy nhất hoạt động trên TextInputEditText.
heronsanches,

1
Thật tuyệt, đây là vấn đề của tôi. Đây là câu trả lời được chấp nhận.
DJtiwari

6

Cách sử dụng dễ dàng nhất:

app:drawableRightCompat ="@drawable/ic_mobilelogin"
app:drawableEndCompat="@drawable/ic_mobilelogin"
app:srcCompat="@drawable/ic_mobile"

và ... chỉ sử dụng app:**Compatcho khả năng tương thích. Đồng thời thêm hỗ trợ trên build.gradle(mô-đun)

android {
   defaultConfig {
       vectorDrawables.useSupportLibrary = true
   }
}

ứng dụng: drawableEndCompat và ứng dụng: drawableRightCompat là khá nhiều điều tương tự nếu tiếng anh của nó
Hossam Hassan

5

Đối với bất kỳ ai nâng cấp lên android gradle 3.0 trở lên, không cần sử dụng AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)hoặc thiết lập vectorDrawables.useSupportLibrary = true(thêm điều này sẽ gây ra sự cố) và sử dụng app:srcCompat, nó chỉ hoạt động.

Tôi mất hai ngày để tìm ra điều này và không tìm thấy bất kỳ tài liệu liên quan nào trong tài liệu của google ...


Thật thú vị, tôi đang sử dụng gradle 3.3.0 và giải pháp này hoạt động. Tuy nhiên, Android Studio vẫn yêu cầu tôi bật thiết lập vectorDrawables.useSupportLibrary = true.
masterwok,

2

Tôi đang sử dụng VectorDrawables trên các thiết bị Pre-lollipop và đây là cách tôi thực hiện: -

Bước 1: Đặt cái này vào lớp ứng dụng của bạn.

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

Bước 2:

Đặt nó vào lớp Ứng dụng của bạn và đừng quên đăng ký lớp Ứng dụng của bạn trong tệp kê khai.

public class App extends Application {
    static {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }
}

Bước 3:

Nhận VectorDrawables bằng cách sử dụng,

imageView.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.my_vector_drawable));

2

Sau khi sử dụng mã dưới đây.

android {
  defaultConfig {
  vectorDrawables.useSupportLibrary = true  
                }
        }




public class App extends Application {
static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}}

vẫn còn, vấn đề hình ảnh vectơ tồn tại cho các thuộc tính dưới đây là

DrawableEnd, DrawableStart, DrawableTop, DrawableBottom, Background

Trong trường hợp này, vui lòng làm theo như bên dưới, Thay vì tham chiếu trực tiếp hình ảnh vectơ, hãy sử dụng thẻ bộ chọn làm tệp trung gian có thể vẽ.

Thí dụ:

ic_warranty_icon.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="17dp"
android:height="24dp"
android:autoMirrored="true"
android:viewportWidth="17"
android:viewportHeight="24">

<path
    android:fillColor="#fff"
    android:pathData="M10.927,15.589l-1.549,0.355a7.47,7.47 0,0 1,-0.878 0.056c-4.136,0 -7.5,-3.364 -7.5,-7.5s3.364,-7.5 7.5,-7.5 7.5,3.364 7.5,7.5c0,3.286 -2.126,6.078 -5.073,7.089zM8.5,2a6.508,6.508 0,0 0,-6.5 6.5c0,3.583 2.917,6.5 6.5,6.5s6.5,-2.917 6.5,-6.5 -2.917,-6.5 -6.5,-6.5z" />

safe_ic_warranty_icon.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_warranty_icon"  />
</selector>

TextView / Bố cục của bạn.

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableStart="@drawable/ic_warranty_icon"
       />


<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/ic_warranty_icon"
       />

Cảm ơn !!! Đối với thuộc tính nền, việc thêm bộ chọn ở giữa thay vì trực tiếp sử dụng vector có thể vẽ được đã làm việc cho api pre-lollipop (19).
Ankur

trong trường hợp của tôi, điều này vẫn không hoạt động đối với API (16), ngay cả khi kết thúc bằngselector
mochadwi

1

Chúng tôi đã thử 3 điều

vectorDrawables.useSupportLibrary = true

Cài đặt setCompatVectorFromResourcesEnabled trong lớp Ứng dụng

static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

Và sử dụng app:srcCompat

Nhưng ngay cả sau đó nó đã thất bại với

Resources$NotFoundException: File res/drawable/$my_icon__0.xml from color state list resource ID #0x7f080008

sau đó chúng tôi phát hiện ra rằng SVG của chúng tôi có thẻ Gradient. Việc chuyển đổi thẻ gradient thành các đường dẫn riêng lẻ cho bên dưới API <= 23 và sử dụng cùng một API SVG> = 24 đã hoạt động.

Nhận trợ giúp từ câu trả lời này https://stackoverflow.com/a/47783962/2171513


Tôi không biết tại sao không ai ủng hộ điều này, nhưng đây thực sự có thể là giải pháp cho vấn đề của tôi. Cảm ơn bạn
DevMike01

0

Chỉ cần chồng chéo vectơ có thể vẽ vào danh sách trạng thái thì vấn đề sẽ được giải quyết

Ví dụ bạn có hình ảnh vector mũi tên quay lại:

ic_back_arrow.xml

có, bạn nên chồng nó lên danh sách lớp xml (ic_back_arrow_vector_vector.xml):

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_back_arrow"/>
</layer-list>

Bởi vì logic:

vectorDrawables.useSupportLibrary = true

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);

sẽ không giúp bạn trên một số thiết bị Trung Quốc và các thiết bị samsung cũ hơn. Nếu bạn không chồng chéo chúng, nó sẽ thất bại.


0

Tôi đã đấu tranh với điều này trong nhiều giờ.

Tôi đã thử mọi thứ mà những câu trả lời này yêu cầu, nhưng ứng dụng của tôi vẫn không ngừng bị lỗi. Tôi đã xóa dòng này: app:srcCompat="@drawable/keyboard"và ứng dụng của tôi đã ngừng bị lỗi. và sau đó khi tôi thêm lại điều tương tự này, nó lại bắt đầu bị lỗi. Vì vậy, tôi quyết định mở tệp đó và tôi thấy lỗi ở dòng đầu tiên cho biết

"Bàn phím có thể vẽ" không có khai báo trong thư mục có thể kéo cơ sở; điều này có thể dẫn đến sự cố.

Tôi nhấp chuột phải vào tệp và nhấp vào "Hiển thị trong trình thám hiểm" và nó không nằm trong thư mục có thể vẽ mà nằm trong thư mục có thể vẽ-v24. Vì vậy, tôi đã sao chép nó và dán vào thư mục có thể vẽ và cuối cùng đã thoát khỏi sự cố.


-2

Gợi ý của Guilherme P không phù hợp với tôi. Tôi đã tiếp tục và đưa ra quyết định sử dụng png ở nơi tôi cần làm những việc bên ngoài ứng dụng: srcCompat tức là drawableLeft, drawableRight, v.v. Đây là một thay đổi khá dễ thực hiện và không có các vấn đề về bộ nhớ. AppCompatDelegate.setCompatVectorFromResourcesEnabled ( thật); giới thiệu.


-3

Một thay thế cho câu trả lời của Benny là tạo một Activitylớp cha:

public abstract class VectorDrawableActivity extends AppCompatActivity {
  static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
  }

  //...
}

Bây giờ hãy mở rộng VectorDrawableActivitythay vì AppCompatActivity.


@cesards Tại sao không?
Code-Apprentice,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.