AlertDialog中的旋转器

时间:2015-07-31 21:40:20

标签: android android-spinner android-alertdialog android-dialogfragment

我有一个AlertDialog,其布局中有两个微调器,如果我没有为那些微调器设置适配器,我的布局正确膨胀。 (https://goo.gl/boniIK

但是一旦我将适配器连接到那些旋转器上,我的正负按钮下面就会有一个巨大的空白区域。 (https://goo.gl/3aJOlN

有没有人知道为什么会出现这个空白区?

提前致谢。

修改

这是我的sort_filter_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.widget.GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="@dimen/dialog_content_padding_top"
    android:paddingBottom="@dimen/dialog_content_padding_bottom"
    app:columnCount="4"
    app:orientation="horizontal"
    android:background="@color/schoolhub_blue">

    <Space
        android:layout_width="@dimen/dialog_content_space"
        app:layout_gravity="fill_vertical"
        app:layout_rowSpan="2"/>

    <TextView
        style="@style/TextView"
        android:layout_width="@dimen/none"
        android:layout_height="@dimen/dialog_content_row_height"
        app:layout_columnWeight="1"
        android:text="@string/sort"/>

    <Spinner
        style="@style/Spinner"
        android:id="@+id/spinner_sort"
        android:layout_width="@dimen/none"
        android:layout_height="@dimen/dialog_content_row_height"
        app:layout_columnWeight="1"/>

    <Space
        android:layout_width="@dimen/dialog_content_space"
        app:layout_gravity="fill_vertical"
        app:layout_rowSpan="2"/>

    <TextView
        style="@style/TextView"
        android:layout_width="@dimen/none"
        android:layout_height="@dimen/dialog_content_row_height"
        app:layout_columnWeight="1"
        android:text="@string/filter"/>

    <Spinner
        android:id="@+id/spinner_filter"
        android:layout_width="@dimen/none"
        android:layout_height="@dimen/dialog_content_row_height"
        app:layout_columnWeight="1"/>

    <include
        layout="@layout/divider"
        android:layout_width="match_parent"
        android:layout_height="@dimen/divider_height"
        android:layout_marginBottom="@dimen/divider_margin"
        android:layout_marginTop="@dimen/divider_margin"
        app:layout_columnSpan="4"/>
</android.support.v7.widget.GridLayout>

我在DialogFragment AlertDialog方法中构建我的onCreateDialog

public Dialog onCreateDialog(Bundle savedInstanceState) {
    super.onCreateDialog(savedInstanceState);

    View view = View.inflate(getActivity(), R.layout.sort_filter_dialog, null);
    // Set up for sort spinner.
    ArrayAdapter<String> sortAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_item, sortStringArray);
    sortAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    Spinner sortSpinner = (Spinner) view.findViewById(R.id.spinner_sort);
    sortSpinner.setAdapter(sortAdapter);

    // Set up for filter spinner.
    ArrayAdapter<String> filterAdapter = new ArrayAdapter<>(getActivity(), R.layout.spinner_dropdown_item_selected, filterStringArray);
    filterAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
    Spinner filterSpinner = (Spinner) view.findViewById(R.id.spinner_filter);
    filterSpinner.setAdapter(filterAdapter);

    AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity(), R.style.DialogStyle);
    dialog.setTitle(getString(R.string.sort_filter_title));
    dialog.setView(view);

    return dialog.create();
}

1 个答案:

答案 0 :(得分:0)

如果没有发布你的代码,很难猜到,但我怀疑问题是你如何夸大布局。在大多数情况下,当您使用适配器时,请按如下方式对其进行充气:

<击> view = inflater.inflate(R.layout.my_layout, parent, false);