It is very simple. Just place those 3 buttons in a layout and set the visibility of that layout to gone/visible on click of hide/unhide button.
EDIT :
It will be like put your spinners which you like to hide/unhide in a layout and provide an ID for it.
<ImageButton
android:id="@+id/setting"
android:layout_width="wrap_content"
android:layout_height="45dip"
android:layout_alignParentRight="true"
android:layout_below="@+id/Editsearch"
android:src="@drawable/button_setting" />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
**android:id="@+id/submenu_layout"**
android:layout_below="@+id/Editsearch"
>
<Spinner
android:id="@+id/category1"
android:layout_width="135dp"
android:layout_height="45dp"
android:layout_alignParentLeft="true"
android:background="@android:drawable/btn_default"
android:text="Category" />
<Spinner
android:id="@+id/category2"
android:layout_width="135dp"
android:layout_height="45dp"
android:layout_alignParentLeft="true"
android:layout_below="@id/category1"
android:background="@android:drawable/btn_default"
android:text="Category" />
<Spinner
android:id="@+id/category3"
android:layout_width="135dp"
android:layout_height="45dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/category2"
android:background="@android:drawable/btn_default"
android:text="Category" />
</RelativeLayout>
Then use this id to take the reference of this layout in your code.
RelativeLayout submenuLayout = (RelativeLayout) findViewById(R.id.submenu_layout);
EDIT 2:
After that OnClick of setting imageButton :
if(submenuLayout .getVisibility() == View.VISIBLE)
submenuLayout .setVisibility(View.GONE);
else
submenuLayout .setVisibility(View.VISIBLE);