Как мы можем скрыть включение макета программно в Android?
Я должен включить один макет в свое приложение. Так что я использовал
<include
android:id="@+id/support_layout"
android:width="match_parent"
android:height="match_parent"
layout="@layout/support"/>
Я ссылаюсь на этот тег include в своем java файле, используя View.
View v = (View) findViewById(R.id.support_layout);
Но в какой-то момент моего кода мне нужно скрыть этот макет. так что я использовал v.GONE
Но это не Скрытие. Я хочу, чтобы эти текстовые и кнопочные атрибуты были расположены в XML программно. Как я могу это сделать?
Есть мой support.xml:
<LinearLayout
android:id="@+id/support_layout"
android:width="match_parent"
android:height="match_parent">
<TextView
android:id="@+id/txt"
android:width="match_parent"
android:height="wrap_content"/>
<Button
android:id="@+id/btn"
android:width="match_parent"
android:height="wrap_content"
android:text="Button"/>
</LinearLayout>
Ответы
Ответ 1
Нам нужно увидеть вашу фактическую реализацию скрытия этого View
вы говорили.
Но, прямо из чтения вашего вопроса, я полагаю, что вы могли бы сделать это неправильно.
Чтобы скрыть или сделать невидимым представление, используйте следующее:
yourView.setVisibility(View.INVISIBLE);
Имейте в виду, что это не снимает мнение; он все равно останется в вашем макете, и вы сможете получить ссылку на него или даже попытаться манипулировать им.
Чтобы удалить его, используйте вместо этого:
yourView.setVisibility(View.GONE);
Теперь, если вы это назовете, ваш образ будет удален из макета. Вы больше не сможете получить ссылку на него.
Ответ 2
Поместите это представление в linearlayout и скройте linearlayout. Это будет работать.
<LinearLayout
android:id="@+id/support_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<include
layout="@layout/support"
android:height="match_parent"
android:width="match_parent" /> </LinearLayout>
И не забывайте писать Lingleayout вместо View.
Вкратце, вместо
View v = (View) findViewById(R.id.support_layout);
Сделай это
LinearLayout v = (LinearLayout) findViewById(R.id.support_layout);
Ответ 3
Вы можете скрыть этот "включенный" макет с вызовом setVisibility():
v.setVisibility(View.GONE)
и показать его позже, позвонив:
v.setVisibility(View.VISIBLE)
Чтобы ссылаться на кнопку и текстовое изображение из макета поддержки, вы можете использовать метод findViewById для вашего включенного представления (я не уверен, но я думаю, что это даже необязательно, вы можете называть его непосредственно в своем представлении активности):
View supportLayout = (View) findViewById(R.id.support_layout);
Textview txv = (TextView) findViewById(R.id.txt);
Button btn = (Button) findViewById(R.id.btn);
(если он не работает, попробуйте: Button btn = (Button) supportLayout.findViewById(R.id.btn);)
- FYI -
Когда вы даете атрибуты включать теги, они переопределяют те из включенного макета (there support_layout LinearLayout), поэтому вам не нужно это делать