code

뷰 가시성이 View.GONE 인 경우 RelativeLayout 문제

codestyles 2020. 10. 20. 07:38
반응형

뷰 가시성이 View.GONE 인 경우 RelativeLayout 문제


나는 RelativeLayout따라서 :

<RelativeLayout>
<TextView1/>
<TextView2/> // <-- View.VISIBLE OR View.GONE
<TextView3/>
<TextView4/>
</RelativeLayout>

각각은 TextView이전 아래에 정박 TextViewandroid: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 등의 앵커를 찾을 수 없을 때 부모가 앵커로 사용됩니다.


belowTextView2의 가시성을 업데이트 할 때 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>

이를위한 간단한 방법은 알파 0/1을 사용하는 것입니다. 또한 onClickListener가 있으면 비활성화하십시오.

참고 URL : https://stackoverflow.com/questions/3279081/issue-with-relativelayout-when-view-visibility-is-view-gone

반응형