Intereting Posts
Просеивание arround textview с девятью фоном патча не имеет визуального эффекта Got Error раздувает класс android.support.design.widget.TabLayout Нет доступных ресурсов при выполнении модульного теста Logback-android: не записывать файл в файл Как создать прозрачную активность, которая может накладываться на главный экран, но не отбрасывается при нажатии кнопки «домой» или «назад»? Android.content.res.Resources $ NotFoundException: Идентификатор ресурса строки Fatal Exception in Main Графический рисунок с 8-патчами Android не масштабируется в режиме просмотра изображений Как разбить логику build.gradle на более .gradle-файлы? Как обновить GridView? Конвертировать GsonBuilder в Kotlin Начальная деятельность через Intent медленная / показывает значительную задержку – почему? Как настроить фокус на TextView при запуске Activity? Запретить прокрутку тела (мобильные, родные браузеры) При первом запуске приложения база данных sqlite обновляется Braintree Интеграция вызывает проблемы Android

DialogFragment с дополнительным пространством ниже ListView

Как вы можете видеть, ниже элемента нижнего списка в моем ListView есть избыточное пространство, от которого я не могу избавиться. Я пробовал Relative и Linearlayout, оба выглядят так. Вот код: Введите описание изображения здесь

public class ChooseDialog extends DialogFragment implements DialogInterface.OnClickListener { String URLhome; String Title; String type; /* public static ChooseDialog newInstance() { ChooseDialog dialog = new ChooseDialog(); Log.v("a", "shit runs"); Bundle bundle = new Bundle(); dialog.setArguments(bundle); return dialog; }*/ public ChooseDialog(String type) { this.type = type; } @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); setCancelable(true); int style = DialogFragment.STYLE_NORMAL, theme = 0; setStyle(style, theme); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(type); builder.setNegativeButton("Cancel", this); LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View dialogLayout = inflater.inflate(R.layout.dialog, null); builder.setView(dialogLayout); final String[] items = {"Red", "Green", "Blue" }; builder.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Log.v("touched: ", items[which].toString()); }} ); return builder.create(); } @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } } 

И код, который запускает диалог:

 public OnClickListener listener = new OnClickListener() { public void onClick(View v) { showNationalityDialog(); } }; private void showNationalityDialog() { FragmentManager fm = getSupportFragmentManager(); ChooseDialog nationalityDialog = new ChooseDialog("Nationality"); nationalityDialog.show(fm, "fragment_edit_name"); } 

Я знаю, что этот вопрос никогда не привлекал большого внимания, но я, наконец, решил проблему.

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

Вот как выглядит новый код:

  switch (editText.getId()) { case (0) : ListView list = (ListView) dialogLayout.findViewById(R.id.listView1); list.setAdapter(new ArrayAdapter<String>(activity, R.layout.dialoglist, activity.getResources().getStringArray(R.array.ageArray))); list.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { editText.setText(activity.getResources().getStringArray(R.array.ageArray)[arg2]); dismiss(); } }); builder = (Integer.parseInt(android.os.Build.VERSION.SDK) < 11)? new AlertDialog.Builder(activity) : new AlertDialog.Builder(activity, android.R.style.Theme_Translucent); builder.setNegativeButton("Cancel", this); builder.setView(dialogLayout); return builder.create(); 

Если вы настраиваете пользовательский вид в диалоговом окне оповещений (через setView ()), ТОЛЬКО имеет ListView, вам не нужно использовать настраиваемое представление. Строитель автоматически добавит ListView в представление, если вызывается назначенный адаптер. Дополнительное пространство в конце представления списка, вероятно, является вашим пользовательским представлением без содержимого.

Например:

  @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final AccountChooserListAdapter adapter = new AccountChooserListAdapter(getActivity(), R.layout.choose_account_list_item, accountMetadataFactory.getAccountsAsList()); return new AlertDialog.Builder(getActivity()) .setCancelable(true) .setTitle(getActivity().getString(R.string.title_add_account)) .setAdapter(adapter, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { listener.onAddAccount(which); } }) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create(); }