android: kéo dài hình ảnh trong hình ảnh để phù hợp với màn hình


126

Tôi có một imageviewcái có chiều cao và chiều rộng được đặt thành fill_parentvới linearlayoutcái có cùng giá trị được đặt. Vì vậy, tôi cho rằng điều này sẽ đặt hình ảnh của tôi phù hợp với màn hình. Nhưng nó chỉ phù hợp như 80% (lề trên và dưới trong chế độ ngang).

Tôi đã thử mã sau đây nhưng không thành công:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

imgView.setMinimumWidth(width);
imgView.setMinimumHeight(height);

imgView.setMaxWidth(width);
imgView.setMaxHeight(height);

Còn ý tưởng nào khác không?


Mặc dù đó là một vấn đề hơi khác nhau, câu trả lời này sẽ giúp bạn.
fredley

Câu trả lời:


317

để thay đổi sử dụng theo ngữ pháp:

imgview.setScaleType(ScaleType.FIT_XY);

HOẶC LÀ

để thay đổi từ xml, hãy sử dụng:

 android:scaleType="fitXY"

26
Tôi biết đây là những gì bạn muốn, nhưng đối với những hình ảnh mà bạn quan tâm về tỷ lệ khung hình, điều này sẽ kéo dài nó ra.
Artem Russakovskii

Hoạt động kỳ diệu cho ImageView bên trong ScrollView. Ngay cả các khía cạnh được giữ đúng.
JNissi

10
Điều tương tự có thể được định nghĩa trong bố cục xml, android: scaleType = "fitXY"
Sathesh

9
Để làm cho hình ảnh lấp đầy tất cả các khu vực và giữ tỷ lệ khung hình tốt, hãy sử dụngv.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
Marco Florian

1
Hoạt động như một bùa mê
dave o grady 26/03/18

119

Cung cấp tệp xml trong bố cục android:scaleType="fitXY"
PS của bạn : điều này áp dụng cho khi hình ảnh được đặt android:src="..."thay android:background="..."vì nền được đặt theo mặc định để kéo dài và vừa với Chế độ xem.


điều cơ bản không giúp giải quyết vấn đề cho tôi, tôi có làm gì sai không? vui lòng xem tại: stackoverflow.com/questions/14164473/
Kẻ

1
Điều này không quan tâm đến tỷ lệ khung hình nếu bạn mã hóa chiều rộng của hình ảnh và muốn chiều cao được chia tỷ lệ
Akshat Agarwal

Làm thế nào tôi có thể có được điều này để phù hợp với toàn bộ màn hình sau đó? Tôi muốn nó vẫn tỷ lệ thuận
Ruchir Baronia

+1 để nói nó áp dụng cho android: src = "..." chứ không phải android: background = "..." điều này rất quan trọng
DragonFire

20

dùng cái này:

ImageView.setAdjustViewBounds(true);

4
Điều này kết hợp với android:scaleType="fitXY"là những gì đã làm việc. Cảm ơn
smac89

@ smac89 Sự khác biệt giữa những kết hợp đó và chỉ sử dụng FIT_CENTER là gì? Không nên sử dụng FIT_CENTER?
Jenix

@Jenix, hãy nhớ rằng đã lâu rồi tôi mới chạm vào Android, nhưng tôi tin rằng lý do để làm fitXYlà để hình ảnh được kéo dài theo tỷ lệ để phù hợp với khung hình / khung nhìn mà nó được đặt. Sử dụng FIT_CENTERâm thanh như nó sẽ đặt hình ảnh ở trung tâm của khung nhìn nhưng không lấp đầy khung nhìn. Tôi có thể sai, nhưng bạn có thể thử nghiệm với một trong hai để tìm hiểu những gì hoạt động
smac89

@ smac89 Trước khi hỏi tôi đã thử nghiệm cả hai và nó hoạt động như nhau. Tôi đã tò mò về lý do nhưng bây giờ nghĩ rằng bạn không biết FIT_CENTER giống như thực tế tôi không biết về sự kết hợp mà bạn cho tôi biết. :)
Jenix

9

nếu bạn sử dụng android:scaleType="fitXY"thì bạn phải chỉ định

android:layout_width="75dp"android:layout_height="75dp"

Nếu sử dụng quấn_content, nó sẽ không kéo dài đến những gì bạn cần

<ImageView
android:layout_width="75dp"
android:layout_height="75dp"
android:id="@+id/listItemNoteImage"
android:src="@drawable/MyImage"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginStart="12dp"
android:scaleType="fitXY"/>

7

Câu trả lời được chấp nhận là hoàn hảo, tuy nhiên nếu bạn muốn làm điều đó từ xml, bạn có thể sử dụng android:scaleType="fitXY"


2

Tôi đã sử dụng android:scaleType="fitXY"mã này trong tập tin Xml.


0

chỉ cần thay đổi chiều cao và chiều rộng ImageView của bạn thành quấn_content và sử dụng

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

trong mã của bạn.


-11

Đang thử sử dụng:

imageview.setFitToScreen(true);
imageview.setScaleType(ScaleType.FIT_CENTER);

Điều này sẽ phù hợp với hình ảnh của bạn với màn hình với tỷ lệ chính xác.


12
"fanteview.setFitToScreen (đúng);" - đó là gì? một số phương pháp không có giấy tờ?
Malachiasz

Tôi đang sử dụng nhật thực và điều này không biên dịch:imageview.setFitToScreen(true)
người học

5
Không có phương pháp như thế này trong Android.
NightFury

Có lẽ ý anh là sao setFitsSystemWindows()??
ban-geengineering
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.