사용자 정의보기가 LinearLayout의 하위로 추가되었습니다. 상위 뷰 그룹과 관계없이 맨 아래에 고정하려면이 사용자 지정보기가 필요합니다. 여기 내가 어떻게하는지. 이 아이 위의 아이들이 match_parent 높이가있는 경우 사용자 정의 하위 뷰 bringToFront가 예상대로 작동하지 않습니다.
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (!drawn) {
drawn = true;
Rect rect = new Rect();
((View) getParent()).getGlobalVisibleRect(rect);
setY(rect.bottom - rect.top - getContext().getResources().getDimension(R.dimen.bottom_bar_height));
setZ(UiUtils.dpToPx(8f));
forceLayout();
bringToFront();
} else {
binding.bottomBarLl.draw(canvas);
}
}
내가있는 LinearLayout 부모에 대한 사용자 정의보기를 추가
은이 일이 표시되지 않습니다.다음은 레이아웃 검사기의 스크린 샷으로 배치되어 있지만 표시되지는 않습니다.
검사자는 또한 사용자 지정보기의 겟츠()가 (24)
내가 API 수준에 대한 짓고 있어요 21+ 그러나 나는 또한 된 onDraw에서 ((View) getParent()).invalidate();
및 getParent().requestLayout();
을 시도한 것을 보여준다 좋지 않다. API 레벨 View.bringToFront()
에 대한 문서에서
bringToFront추가 1
무효 bringToFront()는에 그래서 에서
변경 뷰의 Z 순서 트리, 다른 형제 자매의 윗부분. 이 주문 변경 은 상위 컨테이너가 순서 종속적 인 레이아웃 스키마 (예 : LinearLayout)를 사용하는 경우 레이아웃에 영향을 줄 수 있습니다. KITKAT 이전에이 메소드는 뒤에 viewLayout() 및 invalidate()를 호출하여 뷰의 부모를 부모가 새로운 자식 순서로 다시 그리도록 강제해야합니다.
이것이 작동해야하지만 나에게는 적합하지 않습니다. 내가 뭘 잘못하고 있니?