2010-06-10 39 views
9

Tôi đang tạo cửa sổ bật lên trong chế độ listactivity trong sự kiện onListItemClick.Kích thước cửa sổ bật lên trong android

LayoutInflater inflater = (LayoutInflater) 
this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View pop = inflater.inflate(R.layout.popupcontact, null, false); 
ImageView atnot = (ImageView)pop.findViewById(R.id.aNot); 
height = pop.getMeasuredHeight(); 
width = pop.getMeasuredWidth(); 
Log.e("pw","height: "+String.valueOf(height)+", width: "+String.valueOf(width)); 
atnot.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     pw.dismiss(); 
    } 
}); 

pw = new PopupWindow(pop, width, height, true); 

// The code below assumes that the root container has an id called 'main' 
//pw.showAtLocation(v, Gravity.CENTER, 0, 0); 
pw.showAsDropDown(v, 10, 5); 

Hiện tại, chiều cao và chiều rộng của bố cục được sử dụng cho cửa sổ bật lên (popupcontact). Nhưng họ trả về 0. Tôi đoán đó là do bố cục chưa được hiển thị. Có ai có một đầu mối, làm thế nào tôi có thể kiểm soát kích thước của cửa sổ popup mà không cần phải sử dụng số điểm ảnh tuyệt đối?

Trả lời

2

Tôi không nghĩ rằng mã của bạn sẽ hoạt động vì bạn đang cố gắng lấy chiều rộng và chiều cao của chế độ xem là con của cửa sổ bật lên của bạn.

Vì bạn đang neo cửa sổ bật lên vào chế độ xem "v", có thể đặt chiều rộng và chiều cao theo chế độ xem neo (hoặc với tỷ lệ dựa trên chúng)?

1

Nếu bạn muốn tạo cửa sổ bật lên, hãy xem Creating Dialogs. Nếu bạn muốn sử dụng Chế độ xem riêng hoàn chỉnh trong hộp thoại của mình, hãy xem question đảm bảo đọc nhận xét về câu trả lời được chấp nhận. Tôi nghĩ rằng không cần phải sử dụng PopupWindow mình để tạo ra quan điểm này và các công cụ hộp thoại sẽ giúp bạn có được một kết quả dễ dàng hơn nhiều.

Nếu bạn muốn gắn bó với PopupWindow và bạn không muốn thay đổi chiều rộng và chiều cao của cửa sổ, chỉ cần sử dụng constructor khác cho PopupWindow có một số sẵn có không cần chiều cao và chiều rộng. Họ không có một boolean cho khả năng tập trung cửa sổ nhưng có vẻ như bạn có thể thay đổi điều này sau này thông qua setFocusable().

43

Tôi gặp sự cố tương tự. Tôi giải quyết nó bằng cách gọi:

pop.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 

trước khi kích thước của layout với getMeasuredHeight() và getMeasuredWidth()

+2

Am cũng phải đối mặt với cùng một vấn đề. Điều này làm việc, nhưng đưa ra ít chiều cao mà các mã ban đầu – vignesh

+1

cho tôi một ngoại lệ con trỏ null. – Amrut

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