2011-04-22 4 views
93

В моем приложении у меня есть 2 LinearLayout справа друг от друга. Через пункт меню я хочу, чтобы нижняя часть исчезла, и верхняя часть выпала над исчезнувшим LinearLayout.Как скрыть представление программно?

Проблема в том, что я не знаю, как это сделать в Java.

Не нужно анимировать, я хочу скрыть Layout на возврат другой деятельности (меню), в OnActivityResult. Меню activity устанавливает boolean, на котором я проверяю в OnActivityResult, и в соответствии с его значение определить, если мне нужно, чтобы скрыть или показать нижнюю Layout:

// Only change value if it is different from what it was. 
if(mUseVolumeButtonAsPTT != resultData.getBoolean("UseVolumeButtonAsPTT")){ 
    mUseVolumeButtonAsPTT = resultData.getBoolean("UseVolumeButtonAsPTT"); 
    if(!mUseVolumeButtonAsPTT){ 
     // Hide lower LinearLayout. 
    } else { 
     // Show lower LinearLayout. 
    } 
} 

Может кто-нибудь дать мне подсказку или ссылку на как я должен это сделать?

ответ

255

Вы можете позвонить view.setVisibility(View.GONE), если вы хотите, чтобы удалить его из макета.

Или view.setVisibility(View.INVISIBLE), если вы просто хотите скрыть это.

От Android Docs:

INVISIBLE

Этот вид невидим, но он по-прежнему занимает пространство для макетирования. Используйте с setVisibility(int) и android:visibility.

GONE

Этот вид является невидимым, и он не занимает никакого пространства для целей компоновки. Используйте с setVisibility(int) и android:visibility.

+15

Может ли пользователь по-прежнему взаимодействовать с ним, если он установлен в view.setVisibility (View.INVISIBLE)? – WhiskThimble

+8

Нет, они не могут – Quillion

+0

Может ли действие, например, вносить изменения в представление, если оно установлено в GONE? Я бы предположил, что вы могли бы, если он настроен на НЕВИДИМО. – moatist

15

Попробуйте это:

linearLayout.setVisibility(View.GONE); 
Смежные вопросы