Intereting Posts
Xamarin «Aapt.exe» вышел с кодом -1073741819 Настройка Drawable в качестве цвета текста вызывает исключение. Значение цвета должно начинаться с # Могу ли я установить другой значок для переключателя задач Android? Android MediaCodec кодирует и декодирует в асинхронном режиме Android, как стиль SearchView в панели действий? Android: требуется запись микрофонного входа Какие значения цвета могут использоваться для GradientDrawable Как получить общее количество просмотров из ViewFlipper? Json Parsing из Url В Android, не работает Невозможно выполнить dex: несколько файлов dex определяют разрешение Landroid / Manifest $; Как записывать аудио на веб-странице (iOS, Android, ПК / Mac) – без вспышки SharedPreferences читает старые значения Избежать потери данных из-за прерывания при сохранении файлов на Android? Конфигурации Gradle не работают, как ожидается в новой системе Android Android RecyclerView и привязка данных не работают

Динамическое добавление просмотров в 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, экран заполнен)

Исправить

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

Solutions Collecting From Web of "Динамическое добавление просмотров в RelativeLayout внутри ScrollView"

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

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