4

У меня есть приложение, которое после некоторого нажатия показывает активность с содержимым новостей. Я хочу, чтобы в нижней части этого отображались комментарии, которые динамически загружаются в async-задачу.Программно добавить виды внутри (линейного) макета (который находится внутри ScrollView)

Один из подходов - использовать ListView и настраиваемый ArrayAdapter, но мне придется поместить ListView внутри ScrollView, и это проблема, даже если я вручную переопределяю высоту ListView. Он показывает один элемент списка и одну часть следующего.

Другой подход заключается в определении LinearLayout в качестве владельца для комментариев, чем раздувание другого LinearLayouts, определенного в его собственном XML-файле, заполнение его содержимого, прикрепление к представлению владельца. Он отлично работает, с точки зрения программы, за исключением того, что он подталкивает комментарии к содержимому новостей. Это похоже на то, что он создает другой прокручиваемый вид комментариев под содержимым новостей (содержимое перекрывает его).

Есть ли другой способ сделать это, который не имеет ничего общего со списками или как я могу заставить другой подход работать.

Соответствующий фрагмент кода из XML-макета, который содержит содержание новостей является:

<LinearLayout> //global layout 
    <LinearLayout> 
     //views that hold title, date, content 
    </LinearLayout>  

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/commentsHolder" 
      android:orientation="vertical"> 

     <View 
      android:layout_width="fill_parent" 
      android:layout_height="2dp" 
      android:background="#ed1b24"/> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:text="KOMENTARI" 
      android:layout_marginLeft="5dp"/> 
     <View 
      android:layout_width="fill_parent" 
      android:layout_height="1dp" 
      android:background="#ed1b24"/> 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:orientation="vertical" 
      android:id="@+id/comments_holder_view" 
      android:layout_weight="1"> 
     </LinearLayout> 


    </LinearLayout> 

</LinearLayout> 

и код, который соответствует одному комментарий:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/comments_holder_item" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:padding="5dp"> 

<TextView 
    android:id="@+id/comment_content" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/comments_back_details" 
    android:text="Ovde ide tekst komentara, koji se, naravno, dinamicki dodaje."/> 

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

    <TextView 
     android:id="@+id/comment_author" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     style="@style/categoryStyle" 
     /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" | " 
     style="@style/categoryStyle" 
     /> 

    <TextView 
     android:id="@+id/comment_pubdate" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     style="@style/categoryStyle"/> 

</LinearLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="1dp" 
    android:orientation="horizontal" 
    android:layout_margin="5dp" 
    android:background="#d1d1d1"> 
</LinearLayout> 

Большое спасибо за любые Ответить. Для меня это очень важно.

ответ

2

Я не очень уверен, как вы надуваете свой comments, но вот как я это сделаю.

Объявить для комментариев Layout как LinearLayout и дать ему идентификатор, а затем получить ссылку на этот LinearLayout:

LinearLayout commentsLayout=(LinearLayout)findViewById(R.id.commentsLayoutId); 

, а затем просто добавить ребенка Views к этой схеме:

commentsLayout.addView(newComment); 
+0

обычно вы будете использовать 'getLayoutInflater(). inflate (R.layout.comment, null);' из вашей активности – njzk2

+0

Я сделал точно так же, как вы опубликовали Ovidiu, он отлично работает, но каким-то образом этот линейный макет (с id comments_holder_vie w), который содержит комментарии, лежит под другими макетами. Если я включаю несколько макетов комментариев статически (вручную), все отображается в порядке. Кажется, что проблема возникает при динамическом добавлении этих представлений. Тем не менее, спасибо за ответ. – Dimmy3

+0

, пожалуйста, напишите какой-нибудь код того, как вы создаете добавленные представления (комментарии)? –

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