Android DialogFragment没有WRAP_CONTENT

时间:2015-09-08 21:56:14

标签: android listview android-listview android-dialogfragment android-dialog

点击DialogFragment后,我显示TextView。这个DialogFragment拥有自己的XML布局文件,其底部为ListViewEditTextButton

问题是当ListView只有少数几个项目时,DialogFragment仍会占据屏幕的大部分(即高度远大于应有的高度。

以下是我的意思的截图(黑色是带有一个项目的ListView):

enter image description here

正如您所看到的,当ListView Dialog仅为其所需的大小时,DialogFragent上方有大量空白。

以下是<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="@dimen/spacing_small" tools:context="com.cohenadair.anglerslog.fragments.ManageFragment"> <LinearLayout android:id="@+id/add_item_layout" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true"> <EditText android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/new_item_edit" android:layout_weight="1" android:hint="@string/hint_new_item"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_add" android:id="@+id/add_button" android:layout_margin="0dp"/> </LinearLayout> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@id/add_item_layout" android:id="@+id/content_list_view" android:background="@android:color/black"> </ListView> </RelativeLayout> XML:

onCreateView

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_manage_primitive, container, false); int primitiveId = getArguments().getInt(ARG_PRIMITIVE_ID); PrimitiveFragmentInfo info = FragmentUtils.primitiveInfo(getActivity(), primitiveId); if (info != null) { initViews(view, info); getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); } return view; }

before_perform

谢谢!

1 个答案:

答案 0 :(得分:7)

我通过从RelativeLayout切换并使用LinearLayout属性layout_weight来解决此问题。

这是新的XML:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="@dimen/spacing_small"
    android:orientation="vertical"
    tools:context="com.cohenadair.anglerslog.fragments.ManageFragment">

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

    </ListView>

    <LinearLayout
        android:id="@+id/add_item_layout"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/new_item_edit"
            android:layout_weight="1"
            android:hint="@string/hint_new_item"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button_add"
            android:id="@+id/add_button"/>

    </LinearLayout>

</LinearLayout>