2010-03-24 38 views
6

Có lẽ tôi đã không tìm kiếm đúng cách nhưng tôi không thể tìm ra cho cuộc sống của tôi làm thế nào để trung tâm một phần tử bằng cách sử dụng Bảng bố cục GWT.Làm cách nào để tôi có thể căn giữa phần tử với GWT?

Tôi đang sử dụng UiBinder và tôi đã thử tất cả các bảng triển khai HasVerticalAlignment (DockPanel, HorizontalPanel, VerticalPanel). Không ai trong số họ dường như có bất kỳ tác động nào từ việc đặt căn chỉnh theo chiều dọc (hoặc thậm chí là ngang). Tôi đã đảm bảo rằng họ đang lấy chiều rộng và chiều cao 100%, đã kiểm tra bố cục DOM kết quả từ trình duyệt của tôi và dường như không có gì thay đổi từ các thuộc tính đó.

thích hợp chiết xuất UiBinder (với các yếu tố docklayout thêm bỏ qua):

<g:DockLayoutPanel> 
<g:center> 
    <g:HorizontalPanel width="100%" height="100%" > 
     <g:FlexTable ui:field="homeData" /> 
    </g:HorizontalPanel> 
</g:center> 
</g:DockLayoutPanel> 

Việc sửa chữa nhanh chóng và dơ bẩn tôi đã tìm ra là để tạo của riêng tôi "CenterPanel" phụ tùng mà cơ bản là một wrapper quanh một HTMLPanel với một bảng HTML với một ô valign = "trung bình". Tuy nhiên, điều này về cơ bản cảm thấy giống như một sự trở lại cho các vấn đề trung tâm bố trí css cổ điển. Chắc chắn GWT có cái gì đó để làm điều này mà tôi đã hoàn toàn bỏ qua?

+0

Ông có thể cung cấp một số mã nguồn (có nghĩa là thất bại bạn)? Việc căn chỉnh theo chiều dọc trong GWT có thể phức tạp vì HasVerticalAlignment sử dụng 'vertical-align: middle', không phải' valign = "middle" '. –

+0

Ah, tôi đáng lẽ phải trông đợi nhiều. Sự liên kết theo chiều dọc trong ý nghĩa valign đã không có ý nghĩa nhiều trên một VerticalPanel. Sau đó, vì tôi không thể biết trước chiều cao của nội dung của FlexTable này, tôi nên dựa vào thủ thuật lề CSS tự động chuẩn? Tôi đã hy vọng HasVerticalAlignment có một số phép thuật nội bộ để khắc phục vấn đề này cũ như internet nhưng tôi đoán tôi nên biết rõ hơn. ;) – Camille

Trả lời

0

Bạn đã thử đặt width nhỏ hơn 100% ... tôi cảm thấy chiều rộng HorizontalPanel trở thành 100% ... do đó, nó chiếm toàn bộ DockLayoutPanel và do đó, FlexTable có thể bị căn trái.

7

Định tâm một mặt hàng có thể được thực hiện với một yếu tố tế bào như thế này:

<g:HorizontalPanel width="100%" height="100%"> 
<g:cell horizontalAlignment="ALIGN_CENTER" verticalAlignment="ALIGN_MIDDLE"> 
    <g:Label>Hello Center</g:Label> 
</g:cell> 
</g:HorizontalPanel> 
+0

Cũng hoạt động bằng cách instantiating HorizontalPanel và gọi setSize, setHorizontalAlignment, setVerticalAlignment – djjeck

0

Bạn có thể sử dụng styleName thuộc tính trong thành phần của bạn. Ví dụ:

<g:DockLayoutPanel> 
<g:center> 
    <g:HorizontalPanel width="100%" height="100%" > 
     <g:FlexTable ui:field="homeData" styleName="verticalAlign"/> 
    </g:HorizontalPanel> 
</g:center> 
</g:DockLayoutPanel> 

và có

.verticalAlign{ 
vertical-align: middle; 
} 

trong style.css của bạn

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