나는 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
‘ID가 정의되기 전에는 ID를 참조 할 수 없습니다’라는 규칙에 의해 포착됩니다 .
나는 여기서 명백한 것을 놓치고 있기를 바랍니다.
답변
LinearLayout에 textview 2와 3을 배치하고 선형 레이아웃을 textview 1 아래에 유지할 수 있습니다.
답변
다음 태그를 사용할 수 있습니다.
android:layout_alignWithParentIfMissing="true"
문서에서 :
true로 설정하면 layout_toLeftOf, layout_toRightOf 등에 대한 앵커를 찾을 수 없을 때 부모가 앵커로 사용됩니다.
답변
below
TextView2의 가시성을 업데이트 할 때 TextView3 의 속성을 업데이트하지 않는 이유 는 무엇입니까? (나는 이것을 코드로 가정한다)
뭔가
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);
답변
이 답변은 특정 문제를 해결하지 못하지만 유사한 문제를 해결하므로 누군가에게 도움이되기를 바랍니다.
내 상대 레이아웃이 TextView1에 해당하지 않는 상황이 발생했습니다. 따라서 내 상황에서 TextView2가 GONE이면 TextView3이 부모의 상단에 정렬되기를 원했습니다. TextView3에 android : layout_alignWithParentIfMissing = “true”속성을 추가하여이 문제를 해결했습니다. http://developer.android.com/resources/articles/layout-tricks-efficiency.html을 참조 하십시오 .
불행히도 부모가 아닌 경우 대체 정렬 앵커를 지정하는 방법이 없습니다.
답변
INVISIBLE
또는 은 잊어 버리고 GONE
대신 다음을 사용하십시오.
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();
params.height = 0;
params.setMargins(0,0,0,0);
view.setLayoutParams(params);
답변
넌 할 수있어
<RelativeLayout>
<TextView1/>
<FrameLayout>
<TextView2/> // <-- View.VISIBLE OR View.GONE
</FrameLayout>
<TextView3/>
<TextView4/>
</RelativeLayout>
배경이없는이 FrameLayout 아래에 TextView3을두기 때문에 TextView2가 Gone이면 공간을 차지하지 않습니다.
답변
모든 textView를 수직 방향으로 LinearLayout 아래에 배치하십시오.
<LinearLayout>
<TextView/>
<TextView/>
<TextView/>
<TextView/>
<TextView/>
<TextView/>
</LinearLayout>