2013-06-29 36 views
15

pI đang làm việc với bố cục tuyến tính và muốn đặt chiều cao tối đa của chế độ xem. Trong trường hợp "bình thường", tôi muốn chế độ xem sử dụng "wrap_content". Tuy nhiên, đôi khi các trường hợp có thể đẩy bố cục đến kích thước không mong muốn. Khi điều này xảy ra, tôi muốn giới hạn chiều cao tối đa 300dp.LayoutParams sử dụng đơn vị đo lường nào?

tôi đã thiết lập kích thước của quan điểm sử dụng sau khi danh sách trong cách bố trí vượt quá 4 danh mục:

LinearLayout listLayout = (LinearLayout) dialog.findViewById(R.id.listLayout); 
if(list.size() > 4){ 
    LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 300);       
    listLayout.setLayoutParams(params); 
} 

Rà soát các documentation lá tôi không có đầu mối như những đơn vị đo được áp dụng . Các đơn vị đo lường trong tình huống này là gì (dp, sp, px, ...)?

Chạy thử nghiệm, thậm chí đặt giá trị thành 100 có danh sách vượt quá chiều cao mong muốn.

Vui lòng thông báo

Trả lời

17

Theo tài liệu bạn đã liên kết: pixel. Xem this function

chiều rộng, hoặc MATCH_PARENT, wrap_content hoặc kích thước cố định trong pixel

Mặc dù chức năng bạn đang sử dụng không có bất kỳ giấy tờ rõ ràng, nó được ngụ ý rằng nó sử dụng cùng tài liệu như hàm có nhiều tham số nhất. Chức năng chính nó có thể trông giống như:

LinearLayout.LayoutParams(int width, int height) { 
    this(width, height, /*some default value*/); 
} 

tức là chỉ cần gọi phiên bản 3 thông số có giá trị mặc định.

+0

Vì vậy, trong việc đọc tài liệu hướng dẫn các phương pháp LinearLayout.LayoutParams công cộng (int width, int height) LinearLayout.LayoutParams công cộng (chiều rộng int, chiều cao int, trọng lượng phao) sử dụng cùng một mô tả: Tạo một tập hợp thông số bố cục mới có chiều rộng, chiều cao và cân nặng được chỉ định. thông số rộng \t chiều rộng, hoặc MATCH_PARENT, wrap_content hoặc kích thước cố định bằng pixel chiều cao \t chiều cao, hoặc MATCH_PARENT, wrap_content hoặc kích thước cố định bằng pixel cân \t trọng lượng –

+0

Yup. Các LinearLayout.LayoutParams (int chiều rộng, int chiều cao) chức năng là một quá tải của phiên bản 3-tham số mà có thể trông giống như thế này: (EDIT: thêm vào bài vì ý kiến ​​không định dạng mã) –

1

Như David đã nói, việc đặt LayoutParams qua mã được đặt theo pixel. Bạn có thể sử dụng mã trong this thread để chuyển đổi dp mong muốn thành px.

0

Đây là lớp học đầy đủ với hàng nhập khẩu nếu gặp khó khăn của bạn - @ Pierre.Vriens

//usage: int 300dpInPixels = util.convertDpToPixel(300); 

import android.content.res.Resources; 
import android.util.DisplayMetrics; 

public class utils { 
    public static int convertDpToPixel(float dp){ 
     DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); 
     float px = dp * (metrics.densityDpi/160f); 
     return Math.round(px); 
    } 
} 
+0

tôi không nhận được nó –

+0

Ông cần sử dụng 300dp cho chiều cao của mình. sử dụng hàm này để chuyển đổi thành pixel ... – rahaprogramming

+0

int 300dpInPixels = convertDpToPixel (300); – rahaprogramming

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