Kodda düzen yönü


90

Uygulamamda şu kod var:

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

ve LinearLayout'un yönünü dikey olarak ayarlamak istiyorum. XML'deki karşılığı şudur:

android:orientation="vertical"

XML olmadan kodda nasıl yapabilirim?

Yanıtlar:


188

LinearLayoutOnun yönünü kullanarak değiştiremezsiniz LayoutParams. Sadece bir LinearLayoutnesne ile yapılabilir .

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

9

Bunun gibi kullanabilirsiniz:

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

4
ikinci satırmyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
otaku

4

LinearLayout örneğine ihtiyacınız var. Bundan sonra setOrientation () çağırabilirsiniz

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

Bu işi yapmalı :)

Daha fazla bilgi için Android API'sini kontrol edin .


2

Aşağıda çalışan bir örnek (bu LayoutParams.WRAP_CONTENT, LinearLayout.WRAP_CONTENT DEĞİL)

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

2

Xamarin cevabını arayan benim gibi buraya başka birinin gelmesi durumunda, eşdeğeri:

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

-6

Aşağıdaki gibi kullanın: -

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

2 anlamına gelir Vertical, 1 için kullanılır horizontal.


1
Cevabın kabul edilmesinden 4 yıl sonra neden geri gelip daha kötü bir cevap verdin? '2' kullanmamalısınız. LinearLayout'ta tanımlanan statik değerleri kullanmalısınız, örn. LinearLayout.Vertical.
Gizli Haham

Çünkü haklı mıyım yanlış mı bilmek istedim. :) Artık linearLayout'ta tanımlanan statik değerleri kullanmanın daha iyi olduğunu öğrendim. :-)
Yama Raahi

Öyleyse neden sadece doğru cevaba bakmıyoruz? Stack Overflow, tahminlerinizi CEVAP olarak koymak için kullanılmamalıdır. Soruyu nasıl doğru cevaplayacağınızı bilmiyorsanız, cevap yazmayın. Şimdi birisi bu sayfaya geldiğinde, sizin yanlış cevabınızı görmezden gelip daha iyisini araması gerektiğini bilmek zorundadır. Bu yüzden olumsuz oy alıyorsunuz.
Gizli Haham

Sadece arkadaşıma katkıda bulunmak istedim, benim durumumda bu işe yaradı ve onun için yorum yaptım. BTW, 2 ve 1 kullanmak yanlışsa, o zaman neden var?
Yama Raahi

@StealthRabbi'nin de belirttiği gibi LinearLayout'ta tanımlanan statik sabitlere eklenen ham değer olduğu için var. Ancak, bu değerleri asla kullanmamalısınız.
Daniel Molina
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.