2012-04-20 5 views
3

Мне нужно иметь возможность скрывать/показывать (в смысле View.GONE) целую линейную строку макета в Activity. Является ли это лучшим подходом только для того, чтобы получить ссылку на внутренний макет, который является частью большего относительного макета и установить видимость на этом внутреннем макете? Также следует сохранить ссылку на макет, чтобы я мог просто сделать innerLayout.setVisibility (View.GONE). Если да, то какой тип ссылки должен быть? финал или лучше просто делать поиск каждый раз, когда я хочу скрыть/показать. Как бы то ни было, прямая ссылка на макет выглядит не совсем правильно. С другой стороны, я не хочу, чтобы каждый элемент в макете уходил или помещал findBy, чтобы найти его каждый раз, когда я скрываю/скрываю.Скрытие/скрытие внутренних макетов в Android

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

+0

Сохранение ссылки на макете в деятельности это прекрасно. Тип может быть View, так как вы собираетесь называть setVisibility. – gngr44

+0

Ваш вопрос/описание проблемы решает мою проблему. – Msmit1993

ответ

2

Является ли линейный макет yur установленным в XML или программным путем?

, если его сделать в XML:

обратите внимание, что если какие-либо представления используют эту точку зрения в качестве ссылки в макете, таких как Android: layout_below = «@ + идентификатор/это» то, что не будет очень хорошо идея.

Вы можете использовать что-то вроде этого, он будет скрывать все представления ребенка и себя, не скрывает, но полностью исчезли (Нет места не подхватили его)

Используйте это в качестве эталона либо в классе, если вам хотите использовать его в различных методах или в методе, который вы используете его

View layout; 

Тогда в OnCreate называют эту

layout = findViewById(R.id.linearLayout); 

то, чтобы сделать его исчезнуть:

layout.setVisibility(View.GONE); 

или

layout.setVisibility(8); 

и получить его обратно

layout.setVisibility(View.VISIBLE); 

или

layout.setVisibility(0); 
Смежные вопросы