Построение макета проблемы программно - PullRequest
1 голос
/ 05 марта 2011

Я создаю что-то вроде ListView, но я катлюсь самостоятельно, потому что я хочу делать некоторые пользовательские вещи и иметь больший контроль, чем использование ArrayAdapters.

Итак, я определил часть своего макета вXML, включая один LinerLayout внутри ScrollView.Моя цель - привязать этот Linearlayout в коде, а затем вставить дополнительные RelativeLayouts в LinearLayout, не используя XML, просто код.

Вот мой XML:

            <ScrollView
               xmlns:android="http://schemas.android.com/apk/res/android"
               android:id="@+id/ListScroll"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
             >

                    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                       android:layout_width="fill_parent"
                       android:id="@+id/ListHolder"
                       android:layout_height="400px"
                       android:background="#323232"
                     >
                     <!--Here is where I want the RelativeLayouts to go...  -->     
                    </LinearLayout>
            </ScrollView>

Затем в коде яя пытаюсь добавить RelativeLayouts, каждый высотой 50px, к LinearLayout, тот, что выше, имеет высоту 400px.

                //The parent container - is defined above in XML.
                itemContainer = new LinearLayout(context);
                itemContainer = (LinearLayout)findViewById(R.id.ListHolder);
                Layouts = new ArrayList<RelativeLayout>();
                Layouts = LoadWithRelativeLayouts();

                for(RelativeLayout listItem: Layouts){  

                        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 40);
                        listItem.setLayoutParams(params);
                        itemContainer.addView(listItem);
                  }

Каждый из макетов в массиве имеет текстовое представление в нем, котороеговорит "Тест".Когда я пошагово перебираю код, в массиве есть 10 элементов, и все текстовые представления есть, поэтому я ожидаю увидеть LinearLayout размером 400px, заполненный 10 относительными макетами один за другим, каждый с высотой 50px (и fill_parent width)читая «Тест» - но все, что я вижу, это один, как будто добавлен только один, или все они расположены друг над другом.

Получение скриншота сейчас ...

Ответы [ 2 ]

3 голосов
/ 05 марта 2011

Когда вы добавляете что-то в макет, вы должны использовать параметры макета , которые вида. Поэтому, когда вы добавляете к LinearLayout, вы должны использовать LinearLayout.LayoutParams.

Тогда вам, вероятно, также понадобится установить вертикальную ориентацию LinearLayout, потому что сейчас все элементы, которые вы не видите, находятся в ряду за кадром справа :)

2 голосов
/ 05 марта 2011

Попробуйте добавить android:orientation="vertical" к LinearLayout, удерживая RelativeLayout s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...