Intereting Posts
Большие проекты Android – как ускорить процесс сборки? Как очистить этот неоднозначный вызов от Arrays.copyof ()? Ошибка сборки скрипта, неподдерживаемый метод Gradle DSL: «android ()»! Распознавание лиц в Android? Лучшая база данных для разработки мобильных телефонов Как фильтровать локулятор Android adb с использованием тегов mutiple за один раз? Как вы используете .so Общая библиотека в Java Studio Studio Project Android: Intent Flag, чтобы уничтожить активность и начать новый Content Observer onChange метод, вызываемый дважды после 1 изменения курсора Возможно ли подключить устройство Android Wear с другим устройством BLE напрямую без взаимодействия с телефонным устройством? WebView избавляется от двойного масштабирования. Как использовать скольжение для загрузки изображения в растровое изображение? Android Facebook SDK 4.X, как получить адрес электронной почты и токен доступа Facebook, чтобы передать его веб-службе Как установить целочисленный тег в виджет в файле макета xml? Добавить готовые APK в Android AOSP system.img

Динамическое добавление просмотров в RelativeLayout внутри ScrollView

Я пытаюсь добавить динамически созданные несколько RelativeLayouts в LinearLayout, который находится внутри RelativeLayout, который находится внутри ScrollView. Когда общая высота всех просмотров превышает размер экрана телефона, все представления отображаются правильно. Но когда общего размера динамически добавленных просмотров недостаточно для заполнения экрана, отображается только первый элемент RelativeLayout, а остальные не отображаются на экране. Я действительно безнадежен и не понимаю, почему.

Вот код для динамического заполнения представлений внутри линейного макета:

LinearLayout commentsLayout = (LinearLayout) findViewById(R.id.comments_layout); LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); for(Comment c: commentsList) { RelativeLayout layoutItem = (RelativeLayout) inflater.inflate( R.layout.list_item_comment, null, false); TextView tv = (TextView) layoutItem.findViewById(R.id.textView); ImageView iv = (ImageView) layoutItem.findViewById(R.id.imageView); // set tv's text // set iv's image and onclicklistener, nothing fancy here, everything goes well commentsLayout.addView(layoutItem); } 

Вот list_item_comment.xml:

 <RelativeLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/white" > <ImageView android:id="@+id/imageView" android:layout_width="50dip" android:layout_height="50dip" android:layout_alignParentLeft="true" android:layout_marginTop="10dp" android:layout_marginLeft="10dp" /> <TextView android:id="@+id/textView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dp" android:textSize="16sp" android:layout_toRightOf="@id/imageView" /> </RelativeLayout> 

И вот xml-файл для этого действия:

 <RelativeLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/main_layout" > ... <ScrollView android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true" android:id="@+id/scrollView" > <RelativeLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/relativeContainer" > ... <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/comments_layout" /> </RelativeLayout> </ScrollView> </RelativeLayout> 

И скриншоты:

Без достаточных макетов: (НЕПРАВИЛЬНО, необходимо показать 3 комментария)

Неверный

С достаточным количеством макетов: (CORRECT ONE, экран заполнен)

Исправить

Мне просто нужно показать все три комментария в первом случае: / Спасибо заранее.

Вместо fill_parent , попробуйте изменить layout_height <RelativeLayout> вашего wrap_content на wrap_content .

Кроме того, зачем вам нужен <RelativeLayout> внутри вашего <ScrollView> из xml вашей активности. LinearLayout достаточно, чтобы сделать то, что вы хотите, чтобы ваша деятельность выглядела. Может быть, вы можете просто удалить его.