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?

Jawaban:


188

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

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

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);

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 .


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);

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);

-6

Cukup gunakan sebagai berikut: -

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

2 berarti Vertical, 1 digunakan untuk horizontal.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.