Как мы можем скрыть включение макета программно в 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), поэтому вам не нужно это делать