2013-08-15 39 views
14

Tôi đã một ImageView mà tôi muốn hiển thị phù hợp với toàn bộ chiều rộng của thiết bị, tôi nhận ra rằng như thế này:ImageView hiển thị trong cách bố trí nhưng không phải trên thiết bị thực tế

<ImageView 
    android:id="@+id/home_bar_newvault" 
    android:layout_width="wrap_content" 
    android:layout_height="40dp" 
    android:scaleType="centerCrop" 
    android:layout_alignParentBottom="true" 
    android:src="@drawable/home_bar" /> 

Các home_bar là một tập tin hình ảnh PNG với các kích thước sau: 2399x254. Khi tôi chọn xem Giao diện đồ họa của giao diện người dùng, nó sẽ hiển thị chính xác số lần xem hình ảnh ở cuối hoạt động. Tuy nhiên, khi tôi khởi động ứng dụng trên thiết bị của mình, nó sẽ không hiển thị Imageview.

+0

Bạn đã đặt màn hình đích và độ phân giải của "Bố cục đồ họa" giống như thiết bị thực của bạn chưa? – user2652394

+0

Có, tôi đã thử mọi độ phân giải và màn hình đích và tất cả đều hiển thị ImageView trong Bố cục đồ họa. Tôi chỉ có một thiết bị vật lý cho thử nghiệm thực tế, có thể là một vấn đề liên quan đến thiết bị? –

+0

[Xem câu trả lời này] (https://stackoverflow.com/a/29067760/4084269). Nếu hình ảnh quá lớn, logcat sẽ hiển thị thông báo như thế này: 'Bitmap quá lớn để được tải lên kết cấu (2496x4437, max = 4096x4096)' – Josselin

Trả lời

10

Được rồi, tôi đã thử thay đổi độ phân giải của hình ảnh (cắt giảm một nửa làm 1000x130) và bằng cách nào đó đã khắc phục được sự cố. Tôi nghĩ rằng Android không thể làm cho hình ảnh lớn như thế trực tiếp? Tôi không biết, nếu bạn biết thêm về chủ đề này, xin đừng ngần ngại trả lời! Dù sao, thu nhỏ hình ảnh hoạt động.

+1

Thay đổi kích thước hình ảnh cũng hoạt động cho tôi. Tôi đã có hình ảnh 250x3000px và tôi đã cắt hình ảnh một nửa thành 125x1500px và nó xuất hiện trên thiết bị. – Noah

+1

Oh người đàn ông, điều này làm việc cho tôi là tốt. Thật là một lỗi kỳ lạ. – Jenny

+0

Điều này cũng làm việc cho tôi. Cảm ơn người đàn ông :) – Omid1989

29

Tôi gặp sự cố tương tự, nó chỉ hiển thị trong tab Thiết kế cho Android Studio 2.2.

Tôi đã làm gì để làm cho nó làm việc là thay đổi phím tự động được gán (dân cư qua Kéo/Thả ImageView) app:srcCompat="@drawable/logo"-android:src="@drawable/logo" trong tab Text để làm cho nó xuất hiện trên cả các giả lập và các thiết bị ví dụ

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/logo" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="75dp" 
    android:id="@+id/logoImageView" 
    android:scaleType="fitXY" 
    android:scaleX="1.5" 
    android:scaleY="1.5" /> 
+0

https://stackoverflow.com/questions/40624554/android-what-is-the-difference-between-appsrccompat-and-androidsrc Thay vào đó, bạn có thể dễ dàng thêm hỗ trợ cho ứng dụng: srcCompat – Jayz7522

+0

Có cách nào không để có được AS ngừng làm điều đó theo mặc định? – eric

1

bạn có thể sử dụng:

android:background="@drawable/home_bar" 

thay vì:

android:src="@drawable/home_bar" 
0

Tôi gặp sự cố với điện thoại samsung không hiển thị bản vẽ nhưng nó hoạt động tốt trên điện thoại khác. Bức ảnh không có bất kỳ kích thước lớn nào hoặc bất thường.

Để giải quyết vấn đề này, tôi chỉ cần đặt nội dung hình ảnh của mình vào một thư mục con có thể vẽ được thay vì đặt nó trong thư mục có thể kéo chính. Ví dụ: từ res/drawable để res/drawable-mdpi làm việc cho tôi. Nếu bạn có một hình ảnh để sử dụng cho tất cả mọi thứ không có một dpi cụ thể, đặt nó vào res/drawable-nodpi. Here's một chút về thư mục dpi.