Как скрыть несколько просмотров одновременно? - PullRequest
6 голосов
/ 18 ноября 2011

У меня есть относительный вид компоновки, а также 3 дочерних вида.Я пытаюсь скрыть их все в коде, установив относительное расположение в невидимое с помощью setVisibility.Самое смешное, что когда я использую setVisibility (View.INIVISIBLE), скрывается только первый дочерний элемент, а не два других.Так что я немного запутался - если я установлю родительское представление невидимым, разве оно не изменит видимость всех детей или не оставит их всех в покое?

Не стесняйтесь указывать мне на справочную страницу, которая объясняет это- Я ничего не могу найти.

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

Вот соответствующий XML:

<RelativeLayout
    android:id="@+id/optionsform"
    android:layout_width="fill_parent"
    android:padding="8dp"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/tvoptions"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="@string/tvoptions"
        android:textColor="#f000"
        android:textAppearance="?android:attr/textAppearanceMedium" android:textStyle="bold"/>

    <TextView
        android:id="@+id/tvdictionary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/tvoptions"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="16dp"
        android:text="@string/dictionary"
        android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#f000" />

    <Spinner
        android:id="@+id/dictionary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/tvdictionary"
        android:layout_alignParentRight="true"
        android:layout_marginTop="-10dp"
        android:layout_marginLeft="6dp"
        android:layout_toRightOf="@+id/tvdictionary" />

</RelativeLayout>

А вот соответствующий код, который я использую:

    public void onClick(View v) {
        //Toggle viewing of options, using "if" in case it is set to View.GONE 
        View view = findViewById(R.id.optionsform);
        if (view.getVisibility() == View.VISIBLE) 
            view.setVisibility(View.INVISIBLE);
        else
            view.setVisibility(View.VISIBLE);
    }

Ответы [ 4 ]

3 голосов
/ 18 ноября 2011

Попробуйте установить все три вида на View.INVISIBLE или View.GONE.

ИЛИ

Вы можете попробовать

public void onClick(View v) {
    //Toggle viewing of options, using "if" in case it is set to View.GONE 
    RelativeLayout view = (RelativeLayout) findViewById(R.id.optionsform);
    if (view.getVisibility() == View.VISIBLE) 
        view.setVisibility(View.INVISIBLE);
    else
        view.setVisibility(View.VISIBLE);
}
2 голосов
/ 18 ноября 2011

Вы должны установить в состояние View.GONE.

1 голос
/ 18 ноября 2011
 <TextView
        android:id="@+id/tvdictionary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        **android:layout_below="@+id/tvoptions"** // *should  be  android:layout_below="@id/tvoptions*
        android:layout_marginLeft="30dp"
        android:layout_marginTop="16dp"
        android:text="@string/dictionary"
        android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#f000" />



     <Spinner
            android:id="@+id/dictionary"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            **android:layout_alignTop="@+id/tvdictionary"** // *should be android:layout_alignTop="@id/tvdictionary*
            android:layout_alignParentRight="true"
            android:layout_marginTop="-10dp"
            android:layout_marginLeft="6dp"
            android:layout_toRightOf="@+id/tvdictionary"// *should be android:layout_toRightOf="@id/tvdictionary*
 />

@ id используется при обращении к идентификатору макета
@ + id используется при создании нового идентификатора макета

0 голосов
/ 29 декабря 2011

решаемая. Удаление, а затем установка приложения на моем устройстве Android сделали свое дело. Я буду осторожен с этим в будущем

...