2015-05-14 20 views
32

Có cách nào để tạo bố cục ngăn xếp theo chiều dọc với nút chiếm 30% phụ huynh hay không và nhập văn bản chiếm 70% phụ huynh ? Một cái gì đó như thế này:Xamarin Forms StackLayout: Cách thiết lập chiều rộng/chiều cao của trẻ thành tỷ lệ phần trăm

<StackLayout Orientation="Vertical"> 
    <Entry Height="70%"></Entry> 
    <Button Height="30%">Click me</Button> 
</StackLayout> 

Nhưng điều này không hiệu quả. Chỉ có giải pháp cho đến nay là tạo ra một mục Grid hoàn chỉnh và sử dụng nó. Không có giải pháp nào khác không?

Trả lời

50

StackLayout không hoạt động tốt với các độ cao khác nhau trong trường hợp này. Các công cụ Xamarin Forms không được làm tròn như động cơ WPF tại thời điểm này. Về cơ bản, bạn phải truy cập

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="7*" /> 
     <RowDefinition Height="3*" /> 
    </Grid.RowDefinitions> 
    <Entry Grid.Row="0" VerticalOptions="Fill"></Entry> 
    <Button Grid.Row="1" VerticalOptions="Fill">Click me</Button> 
</Grid> 

Cũng như một lưu ý phụ, chỉ Lưới có thể mở rộng đến toàn bộ chiều rộng hoặc chiều cao của phần tử gốc. StackLayout xác định kích thước tối đa của chúng bằng tổng số con của chúng trừ khi chúng nằm trong Grid và bạn đặt HorizontalOptions="Fill"VerticalOptions="Fill".

Cách duy nhất khác bạn có thể thực hiện việc này là lấy DeviceHeight và Chiều rộng từ HĐH và đặt thủ công Độ cao của các yếu tố của bạn. Một phương pháp phức tạp và thường không hoàn thiện, mà tôi không khuyên bạn nên.

+0

Cảm ơn bạn cũng đã đề cập đến chỉ các Lưới có thể kéo dài kích thước đầy đủ của phụ huynh. Tôi không biết điều này, nhưng tôi cho rằng Stack Layouts cũng có thể kéo dài kể từ khi họ lấy tất cả không gian trên ứng dụng của tôi (Nhưng tôi đoán lý do thực sự là vì tôi đã tạo trẻ em với các thuộc tính như VerticalOptions = FillAndExpand) –

+0

" đến toàn bộ chiều rộng hoặc chiều cao của phần tử gốc ".... bạn có chắc không? Điều gì về VerticalOptions = LayoutOptions.FillAndExpand? Tôi vừa tạo ra một sidebar là một stacklayout và nó mở rộng một cách chính xác chiều cao đầy đủ của màn hình ... tôi đang thiếu cái gì? – jbyrd

+2

Công cụ bố trí từ khi tôi viết bài này (gần một năm trước) phần lớn là khác với phiên bản hiện tại, rất nhiều cải tiến đã được thực hiện. Phiên bản 2.0 (tôi nghĩ) bao gồm các cải tiến về Công cụ bố cục lớn, tôi nghĩ rằng họ có thể thậm chí đã viết lại nó nhưng không chắc chắn. –

0

Trong khi bạn có thể làm điều này với lưới điện, có bố trí phù hợp hơn cho nó AbsoluteLayout

Bạn có thể thiết lập tỷ lệ vị trí với điều này: ". 5,1, 0,5, 0,1" AbsoluteLayout.LayoutBounds =

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