ScrollView не прокручивается в AlertDialog

#android #scrollview #android-linearlayout

#Android #scrollview #android-linearlayout

Вопрос:

Почему ScrollView не прокручивается в AlerDialog?

 AlertDialog.Builder popupBuilder = new AlertDialog.Builder(this);
ScrollView sv = new ScrollView(this);
LinearLayout ll = new LinearLayout(this);
sv.addView(ll);
for (int i=0;i<p.arr.size();i  ){
    addPhoto(ll,p.arr.get(i));
}
popupBuilder.setView(sv);
popupBuilder.show();
  

Поэтому addPhoto() добавляет фотографии из массива arr в LinearLayout 'll'

Комментарии:

1. Вам требуется прокрутка по горизонтали или по вертикали?

2. Попробуйте установить LayoutParams для LinearLayout , это может сделать работу.

3. Попробуйте установить ориентацию линейного представления, например: ll.setOrientation(LinearLayout. ВЕРТИКАЛЬНЫЙ);

4. Хареш, спасибо. Проблема заключалась в том, что ScrollView и LinearLayout имели разные ориентации

Ответ №1:

Это макет в XML :

 <ScrollView>
    <LinearLayout android:orientation="vertical"
            android:scrollbars="vertical"
            android:scrollbarAlwaysDrawVerticalTrack="true">
        <TextView />
        <Button />
    </LinearLayout>
</ScrollView>
  

так что динамически создавайте представления таким же образом, как и представления, которые когда-либо требовались

Пример 2

 <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

<TextView
    android:id="@ id/textmsg"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/hello" />

</LinearLayout>
  

В классе Activity

 LayoutInflater inflater= LayoutInflater.from(this);
View view=inflater.inflate(R.layout.yourxmlfile, null);

TextView textview=(TextView)view.findViewById(R.id.textmsg);
textview.setText("Your really long message.");
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);  
alertDialog.setTitle("Title");  
//alertDialog.setMessage("Here is a really long message.");
alertDialog.setView(view);
alertDialog.setButton("OK", null);  
AlertDialog alert = alertDialog.create();
alert.show();
  

Note контейнер ScrollView может иметь только один дочерний вид макета. Невозможно, например, поместить текстовое представление и кнопку в ScrollView без LinearLayout.