การวางแนวเค้าโครงในโค้ด


90

ฉันมีรหัสนี้ในใบสมัครของฉัน:

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

และฉันแค่ต้องการตั้งค่าการวางแนวของ LinearLayout เป็นแนวตั้ง สิ่งที่เทียบเท่าใน XML คือ:

android:orientation="vertical"

ฉันจะทำในโค้ดโดยไม่มี XML ได้อย่างไร

คำตอบ:


188

คุณไม่สามารถเปลี่ยนของการวางแนวทางการใช้ของมันLinearLayout LayoutParamsสามารถทำได้เฉพาะกับLinearLayoutวัตถุ

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

9

คุณสามารถใช้เช่นนี้:

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

4
บรรทัดที่สองควรเป็นmyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
otaku

4

คุณต้องอินสแตนซ์ LinearLayout หลังจากนั้นคุณสามารถเรียก setOrientation ()

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

ที่ควรทำ :)

สำหรับข่าวสารมากขึ้นตรวจสอบAPI Android


2

ตัวอย่างการทำงานด้านล่าง (เป็น LayoutParams.WRAP_CONTENT ไม่ใช่ LinearLayout.WRAP_CONTENT)

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

2

ในกรณีที่มีใครมาที่นี่เหมือนฉันที่กำลังมองหาคำตอบสำหรับ Xamarin สิ่งที่เทียบเท่าคือ:

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

-6

เพียงใช้ดังนี้: -

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

2 หมายถึงVertical1 ใช้สำหรับhorizontal.


1
ทำไมคุณถึงกลับมา 4 ปีหลังจากที่คำตอบได้รับการยอมรับและให้คำตอบที่แย่ลง? คุณไม่ควรใช้ '2' คุณควรใช้ค่าคงที่ที่กำหนดไว้ใน LinearLayout เช่น LinearLayout.Vertical
ชิงทรัพย์รับบี

เพราะฉันอยากรู้ว่าฉันคิดถูกหรือผิด :) ตอนนี้ฉันได้เรียนรู้แล้วว่าควรใช้ค่าคงที่ที่กำหนดใน linearLayout จะดีกว่า :-)
Yama Raahi

ถ้าอย่างนั้นทำไมไม่เพียงแค่ดูคำตอบที่ถูกต้อง? ไม่ควรใช้ Stack Overflow เพื่อให้การเดาของคุณเป็นคำตอบ หากคุณไม่รู้ว่าจะตอบคำถามอย่างไรให้ถูกต้องอย่าเขียนคำตอบ ตอนนี้เมื่อมีคนเข้ามาที่หน้านี้พวกเขาต้องรู้จักเพิกเฉยต่อคำตอบที่ผิดของคุณและมองหาคำตอบที่ดีกว่า นี่คือสาเหตุที่คุณถูกลดคะแนน
ชิงทรัพย์รับบี

ฉันแค่อยากจะมีส่วนร่วมกับเพื่อนของฉันในกรณีของฉันคนนี้ได้ผลและฉันแสดงความคิดเห็นให้เขา BTW ถ้าใช้ 2 กับ 1 ผิดแล้วทำไมถึงมีอยู่จริง?
Yama Raahi

มีอยู่เนื่องจากเป็นค่าดิบที่แนบมากับค่าคงที่ที่กำหนดไว้ใน LinearLayout ตามที่ @StealthRabbi ชี้ให้เห็น อย่างไรก็ตามคุณไม่ควรใช้ค่าเหล่านั้นเป็นอันขาด
Daniel Molina
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.