У меня есть a RelativeLayout
таким образом:
<RelativeLayout>
<TextView1/>
<TextView2/> // <-- View.VISIBLE OR View.GONE
<TextView3/>
<TextView4/>
</RelativeLayout>
Каждый TextView
привязывается ниже предыдущего TextView
с android:layout_below
.
Проблема состоит в том, что TextView2 может или не может быть там (также View.VISIBLE
или View.GONE
); если это View.VISIBLE
, затем все в порядке, но если это View.GONE
, затем TextView3 заканчивает тем, что был представлен сверху TextView1.
Я попробовал различные способы зафиксировать это, но каждый раз ловится RelativeLayout
'Вы не можете сослаться на идентификатор, прежде чем он будет определен' правило.
Я надеюсь, что пропускаю что-то очевидное здесь.
Вы можете разместить текстовое представление 2 и 3 в LinearLayout и сохранить линейный макет ниже текстового представления 1.
почему бы не обновлять атрибут below
TextView3, когда вы обновляете видимость TextView2? (Я предполагаю, что вы делаете это в коде)
что-то вроде
TextView tv = (TextView) findViewById(R.id.textview3);
RelativeLayout.LayoutParams lp =
(RelativeLayout.LayoutParams) tv.getLayoutParams();
lp.addRule(RelativeLayout.BELOW, R.id.textview1);
((TextView) view).setLayoutParams(lp);