2012-06-23 7 views
0

У меня динамическая компоновка, и я добавляю компоненты в линейную компоновку. Количество компонентов также динамическое.Могу ли я иметь многопозиционную ориентацию макета?

Если горизонтальная ориентация листа горизонтальна, элементы добавляются горизонтально и вертикальные элементы добавляются вертикально.

Теперь у меня есть плитка предметов сначала горизонтально, а затем вертикально, когда элементы заполняются вертикально.

Или я могу использовать любой другой макет для удовлетворения моих потребностей.

Как это enter image description here

+0

привет! u можете использовать макет для нового xml-файла ... u можете прочитать о том, как Android предлагает это здесь. http://developer.android.com/guide/topics/resources/providing-resources.html – Aamirkhan

+0

u можете использовать layout- земля для нового xml-файла ... u может прочитать о том, как Android предлагает это здесь. http://developer.android.com/guide/topics/resources/providing-resources.html – Aamirkhan

ответ

1

Вы можете определенно вложенные LinearLayout элементы с множественными ориентациями. Например:

<LinearLayout 
    android:id="@+id/main_layout" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/firstRow" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:orientation="horizontal" > 
     ... 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/secondRow" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:orientation="horizontal" > 
     ... 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/thirdRow" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:orientation="horizontal" > 
     ... 
    </LinearLayout> 
</LinearLayout> 

Использование подобной структуры позволит вам построить макет, который вы описали.

Для динамических строк вы можете сделать следующее:

layout_row.xml

<LinearLayout 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:orientation="horizontal" /> 

MainActivity.java

mainLayout = (LinearLayout) findViewById(R.id.main_layout); 

// for each dynamic row you can inflate a new view and add it 
dynamicRow1 = getLayoutInflater.inflate(R.layout.layout_row, null); 
mainLayout.addView(dynamicRow1); 

dynamicRow2 = getLayoutInflater.inflate(R.layout.layout_row, null); 
mainLayout.addView(dynamicRow2); 

dynamicRow3 = getLayoutInflater.inflate(R.layout.layout_row, null); 
mainLayout.addView(dynamicRow3); 

В каждой строке можно программно добавить динамический которые необходимо создать с использованием логики того же типа.

+0

Мой макет будет динамичным. поэтому я не могу заранее определить количество строк. – arnp

+0

Это справедливо. Вы могли бы так же легко создать файл макета, который имеет только горизонтальную ориентацию «LinearLayout», программно раздуйте этот макет, а затем добавьте его как дочерний элемент основного «LinearLayout». См. Редактирование для образца кода. – japino

+0

Это круто. Спасибо. – arnp

Смежные вопросы