Hướng bố trí trong mã


90

Tôi có mã này trong ứng dụng của mình:

LinearLayout.LayoutParams params =
    new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT);

và tôi chỉ muốn đặt hướng của LinearLayout thành thẳng đứng. Tương đương trong XML là:

android:orientation="vertical"

Làm cách nào tôi có thể làm điều đó trong mã mà không có XML?

Câu trả lời:


188

Bạn không thể thay đổi LinearLayouthướng của bằng cách sử dụng nó LayoutParams. Nó có thể được thực hiện chỉ với một LinearLayoutđối tượng.

LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);

8

Bạn có thể sử dụng như thế này:

LinearLayout myll = (LinearLayout) findViewById(R.id.yourLinearLayout);
myll.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
myll.setOrientation(LinearLayout.VERTICAL);

4
dòng thứ hai nên làmyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
abhyudayasrinet

4

Bạn cần thể hiện LinearLayout. Sau đó, bạn có thể gọi setOrientation ()

LinearLayout myLayout = ...;
myLayout.setLayoutParams(new LayoutParams(LinearLayout.WRAP_CONTENT, LinearLayout.WRAP_CONTENT);
myLayout.setOrientation(LinearLayout.VERTICAL);

Điều đó sẽ làm công việc :)

Để biết thêm thông tin, hãy kiểm tra API Android .


2

Một mẫu hoạt động bên dưới (đó là LayoutParams.WRAP_CONTENT, KHÔNG phải LinearLayout.WRAP_CONTENT)

myLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
myLayout.setLayoutParams(layoutParams);

2

Trong trường hợp có ai khác đến đây như tôi để tìm kiếm câu trả lời cho Xamarin, điều tương đương là:

LinearLayout layout = /* ... */;
layout.Orientation = Orientation.Vertical;
layout.LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent);

-6

Đơn giản chỉ cần sử dụng như sau: -

LinearLayout mlayout = new LinearLayout(context);
mlayout.setOrientation(2);

2 phương tiện Vertical, 1 được sử dụng cho horizontal.


1
Tại sao bạn quay lại 4 năm sau khi câu trả lời được chấp nhận và đưa ra một câu trả lời tệ hơn? Bạn không nên sử dụng '2'. Bạn nên sử dụng các giá trị tĩnh được xác định trong LinearLayout, ví dụ: LinearLayout.Vertical.
Stealth Rabbi

Bởi vì tôi muốn biết Nếu tôi đúng hay sai. :) Bây giờ tôi đã học được rằng tốt hơn là sử dụng các giá trị tĩnh được xác định trong linearLayout. :-)
Yama Raahi

Vậy tại sao không chỉ nhìn vào câu trả lời đúng? Stack Overflow không nên được sử dụng để đưa các phỏng đoán của bạn làm TRẢ LỜI. Nếu bạn không biết làm thế nào để trả lời câu hỏi một cách chính xác, thì đừng viết câu trả lời. Bây giờ khi ai đó vào trang này, họ phải biết bỏ qua câu trả lời sai của bạn và tìm kiếm những câu trả lời tốt hơn. Đây là lý do tại sao bạn bị đánh giá thấp.
Stealth Rabbi,

Tôi chỉ muốn đóng góp bạn bè của tôi, trong trường hợp của tôi, cái này đã hiệu quả và tôi đã góp ý cho anh ấy. BTW, nếu sử dụng 2 và 1 là sai, thì tại sao nó lại tồn tại.?
Yama Raahi

Nó tồn tại vì nó là giá trị thô được gắn với các hằng số tĩnh được định nghĩa trong LinearLayout như @StealthRabbi đã chỉ ra. Tuy nhiên, bạn không bao giờ nên sử dụng những giá trị đó.
Daniel Molina
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.