2011-12-09 37 views
12

tôi đã thiết lập ImageView của tôi như sau:Bạn thay đổi kích thước của ImageView như thế nào?

<ImageView android:id="@+id/dl_image" 
       android:layout_width="60dp" 
       android:background="@drawable/pictureframe" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="10dp" 
       android:layout_alignParentLeft="true" 
       android:layout_centerVertical="true" 
       android:adjustViewBounds="true" 
       android:scaleType="fitCenter"/> 

ý rằng layout_width được cố định 60dp. Tùy thuộc vào nội dung tôi đã mua trực tuyến, tôi muốn thay đổi kích thước chiều rộng này thành 90dp hoặc 120dp (trong khi vẫn duy trì tỷ lệ khung hình của hình ảnh).

Tôi đã thử sử dụng setLayoutParams, nhưng việc chuyển LayoutParams (120, LayoutParams.WRAP_CONTENT) sẽ ném một ngoại lệ. Nó dường như không thích nó.

Nếu có thể, tôi đang cố gắng tránh tạo một ImageView khác cho kích thước lớn hơn.

Trả lời

32

Nếu bạn đang làm việc với chế độ xem hiện tại, có thể có rất nhiều công việc khi tạo bộ mới LayoutParams từ đầu. Thay vào đó - bạn có thể lấy LayoutParams hiện có của xem, chỉnh sửa này, và sau đó áp dụng chúng vào chế độ xem để cập nhật LayoutParams của nó sử dụng setLayoutParams()

ImageView imageView = findViewById(R.id.dl_image); 
LayoutParams params = (LayoutParams) imageView.getLayoutParams(); 
params.width = 120; 
// existing height is ok as is, no need to edit it 
imageView.setLayoutParams(params); 

Hãy chắc chắn rằng bạn nhập đúng loại LayoutParams. Đối với trường hợp này, như bạn đã nhận xét, bạn chỉ có thể sử dụng số LayoutParams của số ViewGroup. Nếu bạn đã đặt thông số cụ thể cho một loại chế độ xem cụ thể (ví dụ: sắp xếp trong RelativeLayout s), bạn sẽ phải nhập LayoutParams loại chế độ xem đó.

+1

Dường như nó hoạt động theo cách này. Tôi đã sử dụng LayoutParams của ViewGroup. Dường như nó hoạt động tốt. Cảm ơn! :) – atedja

+2

@alnite - Rất vui được giúp đỡ. Cảm ơn bạn đã cho tôi biết về 'ViewGroup', đã chỉnh sửa câu trả lời để phản ánh. –

5

bạn có thể làm điều đó tất cả thích

ImageView imageView = findViewById(R.id.dl_image); 
imageView.getLayoutParams().width = 120; 
Các vấn đề liên quan