2011-01-09 25 views
235

Program aracılığıyla oluşturduğum göreceli bir düzenim var:Bir Bağlantının Düzenleme Düzeni'ndeki layout_align_parent_right özniteliğini nasıl programlanır?

 RelativeLayout layout = new RelativeLayout(this); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, 
      LayoutParams.WRAP_CONTENT); 

Şimdi bu göreli düzende eklemek istediğim iki düğme var. Ancak sorun, her iki düğmenin de birbiriyle çakışan RelatiiveLayout öğesinin solunda gösteriliyor olmasıdır.

buttonContainer.addView(btn1); 
buttonContainer.addView(btn2); 

Şimdi android:layout_alignParentRight="true " veya android:layout_toLeftOf="@id/btn" özniteliklerini xml?

’te yaptığımız gibi nasıl programlayabilirim?

cevap

561

Sen View.getLayoutParams kullanarak kod herhangi LayoutParams erişebilirsiniz. Sadece erişiminiz için LayoutParams'un ne olduğunun farkında olmanız gerekir. Bu normalde, LayoutParams iç çocuğa sahipse, ViewGroup'u kontrol ederek kontrol edilir. Sizin durumunuzda RelativeLayout.LayoutParams.

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)button.getLayoutParams(); 
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
params.addRule(RelativeLayout.LEFT_OF, R.id.id_to_be_left_of); 

button.setLayoutParams(params); //causes layout update 
+1

ne varsa, ne olursa? params.addRule (RelativeLayout.LEFT_OF, R.id.id_to_be_left_of); TextView tvUserName = yeni TextView (hareket); –

+13

Kimlik ekleme hakkında ne dersiniz? – user2161301

+1

Ya 'button'' RecycleView' üzerindeyse? Aynı widget'a aynı veya zıt kuralları ekleyerek bir sorun değil mi? –

10
  1. Eğer düğmeler için oluşturmak ve kimliği gerekir i yöntem addRule() olduğunu düşünüyorum , btn1.setId(1);
  2. mizanpajınıza parametreler ekleyebilir paramsi değişkeni kullanabilirsiniz: refference gerekir Bu LayoutParams nesnesi için android java belgelerini işaretleyin.
+0

Ben kodun herhangi bir parçasını takdir yüksek olacaktır: Sen kodu aracılığıyla binebilirsek RelativeLayout.LayoutParams#addRule(int verb) ve RelativeLayout.LayoutParams#addRule(int verb, int anchor)

kullanarak olacak. Düğmede herhangi bir yöntem bulamıyorum. –

+0

Ayar kimliği, @IdRes ile setId eklenmesi nedeniyle yalnızca bir sayı yerine gerçek bir kaynak kimliği beklediğinden yardımcı olmaz. –

+0

o zaman yeni, geçmişte örneğin bir kaynak numarasını alabiliyordunuz ve kaynak kod için bir temel olarak kullanamazsınız.i sanırım google bunu engellemiş olmalıydı?/ – codeScriber