2016-12-12 13 views
9

Tôi muốn đặt một số vectorDrawables thành ImageView trong Android Studio.Cách đặt VectorDrawable làm hình ảnh cho ImageView được lập trình

Tôi có thể đặt png và jpg có thể vẽ dễ dàng nhưng khi tôi muốn đặt VectorDrawable, nó không hoạt động trên imageview.

img.setImageResource(R.drawable.ic_home); 

ic_home là VectorDrawable và mã này không hoạt động.

+1

đọc https://blog.stylingandroid.com/vectordrawables-part-1/ –

+0

Tôi đã trả lời ở đây, có thể trợ giúp này. bạn có thể thay đổi vector drawable ngay bây giờ. http://stackoverflow.com/a/42281780/4517450 –

Trả lời

12

Theo chính thức android developer blog, không có thay đổi đối với phương thức setImageResource() khi chạy cho vectorDrawables.

Nếu bạn đang thay đổi drawables khi chạy, bạn sẽ có thể sử dụng phương pháp cùng setImageResource() như trước đây - không có thay đổi đó. Sử dụng AppCompat và ứng dụng: srcCompat là phương pháp đơn giản nhất để tích hợp các đối tượng vẽ vector vào ứng dụng của bạn.

Để biết thêm chi tiết, hãy kiểm tra bài viết hay này AppCompat — Age of the vectors bởi Nhà phát triển Google.

6

nếu bạn quan tâm đến khả năng tương thích ngược, bạn nên sử dụng AppCompatImageView thay vì chế độ xem hình ảnh pf. đi qua mã dưới đây.

<android.support.v7.widget.AppCompatImageView 
    android:id="@+id/iv_about" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    /> 

java

AppCompatImageView image = (AppCompatImageView) findViewById(R.id.iv_about); 
image.setImageResource(); 

Và nó sẽ đóng vai trò quan điểm của app:srcCompat.

+2

Không cần điều đó, theo tài liệu "Điều này sẽ tự động được sử dụng khi bạn sử dụng ImageView trong bố cục của bạn và hoạt động/hộp thoại cấp cao nhất được cung cấp bởi appcompat. Bạn chỉ cần sử dụng lớp này theo cách thủ công khi viết chế độ xem tùy chỉnh. " Vì vậy, bạn chỉ có thể sử dụng ImageView trừ khi bạn đang mở rộng nó. – Adrian

+0

@ user924 bạn nói đúng. –

+0

@ user924 Tôi không chỉ định rằng bạn có thể sử dụng ImageView miễn là hoạt động mở rộng AppCompatActivity. Nếu bạn không, nó giống như bạn nói. – Adrian

20

Nếu bạn muốn sử dụng drawables vector (thấp hơn hoạc lớn hơn API 21) chỉ làm như sau:

Đặt hình ảnh theo chương trình (ví dụ như trong hoạt động của bạn):

imageView.setImageResource(R.drawable.ic_left_arrow_blue); 

hoặc bằng XML:

app:srcCompat="@drawable/your_vector_name" 

Trong ứng dụng của bạn build.gradle bạn cần bao gồm:

android { 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
    } 
} 

Và đối với hỗ trợ vector cho ít hơn API 21, thêm dòng sau vào onCreate:

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 
+3

vẫn không hoạt động đối với KitKat, chỉ cho> = 5.1 nó hoạt động ok với 'setImageResource' – user924

+0

cho KitKat này chỉ hoạt động https://stackoverflow.com/a/35918375/7767664 – user924

1

Tôi đã có một véc tơ theo quan điểm tái chế tôi đã sử dụng img.setImageResource (R.drawable.ic_home) mà didnt làm việc đúng như một số hình ảnh khác được hình thành trong một số mục của xem tái chế sau đó tôi sử dụng img.setImageDrawable (activity.getResources(). getDrawable (R.drawable.ic_home)) này làm việc.

0

Sử dụng android.support.v7.widget.AppCompatImageButton, android.support.v7.widget.AppCompatImageView, android.support.v7.widget.AppCompatTextView thay vì ImageButton, ImageView vv nếu loại vector hình ảnh được sử dụng.

Chủ yếu cho chế độ xem tùy chỉnh.

Các vấn đề liên quan