Scrollview уменьшает вид снизу в диалоге

У меня есть диалог, в котором есть список (куча TextView s внутри LinearLayout ) внутри ScrollView . Макет выглядит следующим образом:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ProgressBar android:id="@+id/delete_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" /> <ScrollView android:id="@+id/filename_scroll" android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/filename_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout> </ScrollView> <View android:id="@+id/horisontal_separator" android:layout_width="fill_parent" android:layout_height="1dp" android:background="@android:color/darker_gray" /> <LinearLayout android:id="@+id/button_container" android:layout_width="match_parent" android:layout_height="48dp" > <Button android:id="@+id/load_button" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/button_load" android:gravity="center" android:layout_weight="1" /> <View android:layout_width="1dp" android:layout_height="fill_parent" android:background="@android:color/darker_gray" /> <Button android:id="@+id/delete_button" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/button_delete" android:gravity="center" android:layout_weight="1" /> </LinearLayout> </LinearLayout> 1 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ProgressBar android:id="@+id/delete_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" /> <ScrollView android:id="@+id/filename_scroll" android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/filename_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout> </ScrollView> <View android:id="@+id/horisontal_separator" android:layout_width="fill_parent" android:layout_height="1dp" android:background="@android:color/darker_gray" /> <LinearLayout android:id="@+id/button_container" android:layout_width="match_parent" android:layout_height="48dp" > <Button android:id="@+id/load_button" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/button_load" android:gravity="center" android:layout_weight="1" /> <View android:layout_width="1dp" android:layout_height="fill_parent" android:background="@android:color/darker_gray" /> <Button android:id="@+id/delete_button" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/button_delete" android:gravity="center" android:layout_weight="1" /> </LinearLayout> </LinearLayout> 1 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ProgressBar android:id="@+id/delete_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" /> <ScrollView android:id="@+id/filename_scroll" android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/filename_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout> </ScrollView> <View android:id="@+id/horisontal_separator" android:layout_width="fill_parent" android:layout_height="1dp" android:background="@android:color/darker_gray" /> <LinearLayout android:id="@+id/button_container" android:layout_width="match_parent" android:layout_height="48dp" > <Button android:id="@+id/load_button" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/button_load" android:gravity="center" android:layout_weight="1" /> <View android:layout_width="1dp" android:layout_height="fill_parent" android:background="@android:color/darker_gray" /> <Button android:id="@+id/delete_button" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/button_delete" android:gravity="center" android:layout_weight="1" /> </LinearLayout> </LinearLayout> 

Похоже, что в списке всего несколько элементов: Несколько пунктов в списке

Но когда на экране больше, чем может поместиться (и есть настоящая необходимость прокрутки), мои кнопки подталкиваются под экран. При прокрутке до конца все выглядит так: Множество предметов в списке

Мне нужен LinearLayout содержащий кнопки, чтобы оставаться как нижний колонтитул, он не должен прокручиваться нигде и, очевидно, не исчезает. Я пытался возиться с высотами и весами макета, но безрезультатно.

Solutions Collecting From Web of "Scrollview уменьшает вид снизу в диалоге"

Попробуйте изменить в scrollView

 <ScrollView android:id="@+id/filename_scroll" android:layout_width="match_parent" android:layout_weight="1" android:layout_height="0dp" > 

Я думаю, вы должны указать Scrollview's layout_height явно

 <ScrollView android:id="@+id/filename_scroll" android:layout_width="match_parent" android:layout_height="wrap_content" > ////say android:layout_height="50dp" <LinearLayout android:id="@+id/filename_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout> </ScrollView> 

как это. И еще один вариант: внесите внешний компонент, такой как макет таблицы, явно указав layout_height и включив свой scrollview как есть.

Надеюсь, что это работает

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

 <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/gameList" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="30dip" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" > <Button android:id="@+id/load" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="Load" /> <Button android:id="@+id/delete" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="Delete" /> </LinearLayout> </FrameLayout> 

И назовите это так из своего файла класса,

 > Button getList = (Button) findViewById(R.id.getList); > getList.setOnClickListener(new View.OnClickListener() { > > @Override > public void onClick(View v) { > // TODO Auto-generated method stub > final Dialog listDialog = new Dialog(MainActivity.this); > listDialog.setTitle("Load a game"); > listDialog.setContentView(R.layout.custom_dialog); > > ListView gameList = (ListView) listDialog.findViewById(R.id.gameList); > gameList.setAdapter(new ArrayAdapter<String> (MainActivity.this,android.R.layout.simple_list_item_1,new String[] {"your array" })); > > Button dismiss = (Button) listDialog.findViewById(R.id.load); > dismiss.setOnClickListener(new View.OnClickListener() { > > @Override > public void onClick(View v) { > // TODO Auto-generated method stub > listDialog.dismiss(); > } > }); > > listDialog.show(); > > } });