Элементы группы Android Layout

У меня есть следующий макет:

<!-- section 1 -->
<LinearLayout>
 <ImageView/>
 <TextView/>
</LinearLayout>
<ViewPager/>
<View/>

<!-- section 2 -->
<LinearLayout>
 <ImageView/>
 <TextView/>
</LinearLayout>
<ViewPager/>
<View/>

<!-- section 3 -->
<LinearLayout>
 <ImageView/>
 <TextView/>
</LinearLayout>
<ViewPager/>
<View/>

У меня есть эти 3 раздела, и я пытаюсь установить видимость каждого раздела. Но если я пытаюсь установить видимость раздела 1, мне нужно установить каждый элемент (LinearLayout, ViewPager, View) отдельно. Есть ли способ, которым я могу сгруппировать каждый раздел, поэтому мне нужно установить видимость только один раз, и весь раздел будет отключен?

заранее спасибо

2 ответа

Решение

Если макет верхнего уровня ConstraintLayout Вы можете поместить все представления каждого раздела в группу. Установка видимости группы изменяет видимость всех ее участников. Увидеть Group,

Этот класс контролирует видимость набора ссылочных виджетов. Ссылки на виджеты добавляются в список идентификаторов, разделенных запятыми, например:

 <android.support.constraint.Group
          android:id="@+id/group"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:visibility="visible"
          app:constraint_referenced_ids="button4,button9" />

Если макет верхнего уровня не ConstraintLayout тогда у вас есть несколько вариантов.

  1. Установите видимость каждого члена секции индивидуально (пытаясь избежать этого, но это вариант). Вы можете настроить свои собственные внутренние групповые ссылки, чтобы сделать это проще.

  2. Завернуть каждый раздел в другой ViewGroup такие как FrameLayout, Настройка видимости ViewGroup Родитель влияет на видимость всех своих детей.

-- секция 1 --
FrameLayout
LinearLayout
ImageView
TextView
/ LinearLayout
ViewPager
Посмотреть

- раздел 2 -
FrameLayout
LinearLayout
ImageView
TextView
/ LinearLayout
ViewPager
Посмотреть

- раздел 3 -
FrameLayout
LinearLayout
ImageView
TextView
/ LinearLayout
ViewPager
Посмотреть

Конечно, ViewGroup может быть LinearLayout, RelativeLayout и т. д. - все, что имеет смысл. FrameLayout используется в качестве примера

Просто вызовите setVisibility() в родительском макете, который содержит представление, которое вы хотите скрыть в основной деятельности;

в котором флаги VISIBILITY в setVisibility будут определять видимость вида. Есть 3 флага

  1. VISIBLE
  2. INVISIBLE
  3. УШЕЛ

в вашем случае, скажем, раздел 1 имеет линейный макет с идентификатором layout_one

код должен выглядеть так:

LinearLayout layoutOne= (LinearLayout) findViewById(R.id.layout_one);
    layoutOne.setVisibility(View.INVISIBLE);
Другие вопросы по тегам