2016-03-21 11 views
0

Bir android uygulaması geliştiriyorum. Uygulamamda, bir LinearLayout için programlı olarak onay kutularını ekliyorum. Ancak onay kutuları eklendikten sonra, yerleşime tam olarak uymuyor. Lütfen aşağıdaki ekran görüntüsüne bakın.Programatik olarak eklenmiş bir onay kutusu ile başlığa uymuyor Android

enter image description here

Eğer ekran "x-samll" metin ve onun onay kutusunu görebileceğiniz gibi

Ekran düzgün monte edilmez. İstediğim şey hem onay kutusu hem de metni yeterli alan olmadığı zaman birlikte yeni çizgiye gider. Lütfen bunu nasıl başarabilirim.

Bu

programlı

if(attrs.length()>0) 
           { 
            LinearLayout attrControlsSubContainer = new LinearLayout(getBaseContext()); 
            attrControlsSubContainer.setOrientation(LinearLayout.HORIZONTAL); 
            LinearLayout.LayoutParams layoutParams= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
            attrControlsSubContainer.setLayoutParams(layoutParams); 
            for(int i=0;i<attrs.length();i++) 
            { 
             CheckBox chkAttribute = new CheckBox(getBaseContext()); 
             chkAttribute.setText(attrs.getJSONObject(i).getString("name")); 
             chkAttribute.setTextColor(Color.BLACK); 
             chkAttribute.setId(attrs.getJSONObject(i).getInt("id")); 
             attrControlsSubContainer.addView(chkAttribute); 
            } 
            attributeControlContainer.addView(attrControlsSubContainer); 
           } 
+0

İlgili [soru] (http://stackoverflow.com/questions/ 14528381/android-horizontal-linearlayout-wrap-elements) – OJ7

cevap

0

kullanım kodunun altına onay kutularını eklemek nasıl: Kullanmak gerekir

if(attrs.length() > 0) { 
     ScrollView mScrollView = new HorizontalScrollView(getApplicationContext()); 
     mScrollView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     mScrollView.setFillViewport(true); 
     LinearLayout attrControlsSubContainer = new LinearLayout(getBaseContext()); 
     attrControlsSubContainer.setOrientation(LinearLayout.HORIZONTAL); 
     LinearLayout.LayoutParams layoutParams= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);        attrControlsSubContainer.setLayoutParams(layoutParams); 
     for(int i=0;i<attrs.length();i++) 
     { 
     CheckBox chkAttribute = new CheckBox(getBaseContext()); 
     chkAttribute.setText(attrs.getJSONObject(i).getString("name")); 
     chkAttribute.setTextColor(Color.BLACK); 
     chkAttribute.setId(attrs.getJSONObject(i).getInt("id")); 
     attrControlsSubContainer.addView(chkAttribute); 
            } 
     mScrollView.addView(attrControlsSubContainer); 
     attributeControlContainer.addView(mScrollView); 


} 
+0

Bu çalışmıyor. Sadece aynı. –

0

LinearLayout bunun için yeterli değildir FlowLayout

<com.wefika.flowlayout.FlowLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="start|top"> 


</com.wefika.flowlayout.FlowLayout> 

Gradle dependancy: - compile 'org.apmem.tools:layouts:[email protected]'

Sonra FlowLayout

kullanımda FlowLayout.LayoutParams dinamik onay kutusunu eklemek

FlowLayout.LayoutParams params = new FlowLayout.LayoutParams 
        (ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
+0

Grandle kullanarak FlowLayout'u kurmak için Link alabilir miyim? –