Orientasi tata letak dalam kode

90

Saya memiliki kode ini di aplikasi saya:

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

dan saya hanya ingin menyetel orientasi LinearLayout ke vertikal. Persamaan dalam XML adalah:

android:orientation="vertical"

Bagaimana saya bisa melakukannya dalam kode, tanpa XML?

Greg
sumber

Jawaban:

188

Anda tidak dapat mengubah LinearLayoutorientasi dengan itu LayoutParams. Itu hanya bisa dilakukan dengan sebuah LinearLayoutobjek.

LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);
Michael
sumber
8

Anda bisa menggunakan seperti ini:

LinearLayout myll = (LinearLayout) findViewById(R.id.yourLinearLayout);
myll.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
myll.setOrientation(LinearLayout.VERTICAL);
Balaji Khadake
sumber
4
baris kedua harusmyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
abhyudayasrinet
4

Anda perlu membuat instance LinearLayout. Setelah itu Anda bisa memanggil setOrientation ()

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

Itu harus melakukan pekerjaan itu :)

Untuk info lebih lanjut, periksa Android API .

dudeldidadum
sumber
2

Contoh yang berfungsi di bawah ini (LayoutParams.WRAP_CONTENT, BUKAN LinearLayout.WRAP_CONTENT)

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

Jika ada orang lain yang datang ke sini seperti saya mencari jawaban untuk Xamarin, padanannya adalah:

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

Cukup gunakan sebagai berikut: -

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

2 berarti Vertical, 1 digunakan untuk horizontal.

Yama Raahi
sumber
1
Mengapa Anda kembali 4 tahun setelah jawaban diterima dan memberikan jawaban yang lebih buruk? Anda tidak boleh menggunakan '2'. Anda harus menggunakan nilai statis yang ditentukan di LinearLayout, misalnya LinearLayout.Vertical.
Stealth Rabbi
Karena saya ingin tahu apakah saya benar atau salah. :) Sekarang saya belajar bahwa lebih baik menggunakan nilai statis yang didefinisikan dalam linearLayout. :-)
Yama Raahi
Lalu mengapa tidak melihat jawaban yang benar saja? Stack Overflow tidak boleh digunakan untuk menempatkan tebakan Anda sebagai JAWABAN. Jika Anda tidak tahu bagaimana menjawab pertanyaan dengan benar, maka jangan menulis jawaban. Sekarang ketika seseorang datang ke halaman ini, mereka harus tahu untuk mengabaikan jawaban Anda yang salah dan mencari yang lebih baik. Inilah sebabnya mengapa Anda tidak disukai.
Stealth Rabbi
Saya hanya ingin berkontribusi teman saya, dalam kasus saya yang ini berhasil dan saya berkomentar untuknya. BTW, kalau salah pakai 2 dan 1, lalu kenapa sih ada.?
Yama Raahi
Itu ada karena ini adalah nilai mentah yang dilampirkan ke konstanta statis yang ditentukan di LinearLayout seperti yang ditunjukkan @StealthRabbi. Namun, Anda tidak boleh menggunakan nilai-nilai itu.
Daniel Molina