뷰 가시성이 View.GONE 인 경우 RelativeLayout 문제
나는 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>
이를위한 간단한 방법은 알파 0/1을 사용하는 것입니다. 또한 onClickListener가 있으면 비활성화하십시오.
'code' 카테고리의 다른 글
Windows Server 2008 (64 비트)에서 wcf 서비스를 검색하는 동안 "HTTP 오류 404.3-찾을 수 없음" (0) | 2020.10.20 |
---|---|
Android 스튜디오에서 buildToolsVersion '23 .0.1 '을 업데이트 한 후 메모리 부족 문제 (0) | 2020.10.20 |
대화 상자 외부를 누를 때 DialogFragment를 닫는 방법은 무엇입니까? (0) | 2020.10.20 |
Android int를 String으로 변환하는 방법은 무엇입니까? (0) | 2020.10.20 |
JavaScript에서 ISO 날짜를 날짜 형식 yyyy-mm-dd로 변환 (0) | 2020.10.20 |