расширяемое меню Android (скрытие/отображение меню)

в моем макете приложения у меня есть кнопка настройки .... когда мы нажимаем ее, она показывает некоторые подменю .... когда мы нажимаем ее снова, она скрывает все подменю .... выглядит как расширяемый список, но не совсем так... просто скрытие/отображение меню, чтобы получить место для других представлений.... как я могу это сделать?

вот скриншоты именно то, что я хочу сделать

скрыть меню

показать меню

вот мой XML-файл:

<RelativeLayout
android:layout_height="fill_parent"
android:layout_width="fill_parent">
    <EditText
        android:id="@+id/Editsearch"
        android:hint="Enter keyword..."
        android:layout_alignParentLeft="true"
        android:singleLine="true"
        android:layout_width="fill_parent"
        android:layout_toLeftOf="@+id/search"
        android:layout_height="wrap_content" />
    <ImageButton
        android:id="@+id/search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/button_search"
        android:layout_alignParentRight="true" />
    <Spinner
        android:id="@+id/province"
        android:layout_width="135dp"
        android:layout_height="45dp"
        android:layout_below="@+id/Editsearch"
        android:layout_toLeftOf="@+id/setting"
        android:textSize="12dip"
        android:textStyle="bold"
        android:background="@android:drawable/btn_default"
    />
    <ImageButton
        android:id="@+id/setting"
        android:layout_width="wrap_content"
        android:layout_height="45dip"
        android:layout_below="@+id/Editsearch"
        android:src="@drawable/button_setting"
        android:layout_alignParentRight="true" />
    <Spinner
        android:id="@+id/Category"
        android:layout_width="135dp"
        android:layout_height="45dp"
        android:text="Category"
        android:layout_below="@+id/Editsearch"
        android:layout_alignParentLeft="true"
        android:background="@android:drawable/btn_default" />
        <!-- Job Category title-->
    <TextView
        android:id="@+id/Title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:typeface="serif"
        android:textSize="13dip"
        android:layout_below="@+id/province"
        android:layout_gravity="center"

        android:text="Total Job : 1982"
        android:textStyle="bold" />
    <ListView
        android:id="@+id/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/Title"
        android:listSelector="@drawable/list_selector" />
</RelativeLayout>

заранее спасибо


person Arsyah    schedule 06.02.2013    source источник


Ответы (2)


Это очень просто. Просто поместите эти 3 кнопки в макет и установите видимость этого макета на исчезновение/видимость при нажатии кнопки скрытия/отображения.

РЕДАКТИРОВАТЬ :

Это будет похоже на размещение ваших счетчиков, которые вы хотите скрыть/показать, в макете и указать для них идентификатор.

<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>

Затем используйте этот идентификатор, чтобы взять ссылку на этот макет в свой код.

RelativeLayout submenuLayout = (RelativeLayout) findViewById(R.id.submenu_layout);

РЕДАКТИРОВАТЬ 2:

После этого OnClick настройки imageButton :

 if(submenuLayout .getVisibility() == View.VISIBLE)
    submenuLayout .setVisibility(View.GONE);
    else
        submenuLayout .setVisibility(View.VISIBLE);
person Sourab Sharma    schedule 06.02.2013
comment
спасибо за ответ.... но можете ли вы показать мне примеры кодов? я новичок в программировании для Android...:D - person Arsyah; 06.02.2013
comment
Спасибо... увидев ваш xml-файл... совет каждому новичку... обязательно следуйте соглашениям о кодировании... это облегчит вашу жизнь в будущем.. - person Sourab Sharma; 06.02.2013
comment
Привет, мистер Сураб Шарма ..... еще один вопрос ...: D, у меня все еще есть небольшая проблема .... в моем XML-файле, который я использовал (android:visibility=gone) в submenuLayout, затем в onclick слушатель в моей деятельности я использовал submenuLayout.setVisibility(View.VISIBLE);. когда я нажимаю кнопку настройки, он показывает скрытый макет, но когда я нажимаю его еще раз, ничего не происходит.... я хочу снова скрыть макет.... как это сделать.... спасибо заранее - person Arsyah; 07.02.2013
comment
Я снова отредактировал свой ответ... см. РЕДАКТИРОВАТЬ 2 для вашего решения этой проблемы. - person Sourab Sharma; 07.02.2013
comment
привет, мистер Сураб Шарма, у меня проблема с моим приложением, пожалуйста, проверьте это ССЫЛКА, надеюсь, вы мне поможете.... :) - person Arsyah; 13.03.2013

используйте этот код

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

themeUrlRow.setVisibility(View.VISIBLE);

сделать его невидимым

themeUrlRow.setVisibility(View.GONE);

и в xml поместите кнопку в макет, а также сделайте ее невидимой, а в clicklistener добавьте приведенный выше код.

xml-код

            <LinearLayout
               android:id="@+id/themeUrlRow"
            android:layout_width="fill_parent"
            android:gravity="center"
            android:visibility="gone" > />

            <Button
                android:id="@+id/register"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Register" />

            <Button
                android:id="@+id/register"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Register" />
        </LinearLayout>
person saran    schedule 06.02.2013