Я сделал это с помощью макета, подобного этому
<RelativeLayout android:id="@+id/editFrame"
android:layout_width="wrap_content"
android:layout_below="@id/imageAttachments"
android:layout_height="wrap_content"
>
<EditText android:id="@+id/editText"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
></EditText>
</RelativeLayout>
<ListView android:id="@+id/ListView01"
android:layout_below="@id/editFrame"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
></ListView>
Затем в коде выполните следующее:
findViewById(R.id.editText).setVisibility(View.GONE);
чтобы освободить место, или
findViewById(R.id.editText).setVisibility(View.VISIBLE);
чтобы показать окно поиска.
Вместо EditText можно также использовать любой другой элемент управления или макет для комбинации элементов управления.
Если установить его видимость GONE, окружающий макет editFrame (а также FrameLayout) может сузиться до нулевого размера и освободить пространство для ListView (который устанавливается как макет непосредственно под макетом editFrame).