Blessing Venus

ParentLayout의 ChildView가 너무 많아 화면범위를 벗어날때 ParentLayout의 Shape XML이 무효화 되는 문제 본문

Tip&Tech/Android

ParentLayout의 ChildView가 너무 많아 화면범위를 벗어날때 ParentLayout의 Shape XML이 무효화 되는 문제

Blessing Venus 2017. 4. 24. 18:22
<?xml version="1.0" encoding="utf-8"?>

<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="1dp">
<solid android:color="@color/color_white"/>
<!--<corners-->
<!--android:bottomRightRadius="5dp"-->
<!--android:bottomLeftRadius="5dp"-->
<!--android:topLeftRadius="5dp"-->
<!--android:topRightRadius="5dp"/>-->

<corners android:radius="6dp" />

<stroke android:width="1dp"
android:color="@color/color_dcdcdc"
/>
</shape>

<!--
http://blog.gomsang.com/15
Radius 를 5dp 줬습니다. 더올리면 경도가 강해지고 줄일수록 경도가 약해집니다 5~10 정도가 거슬리지도 않고
Stroke 는 아까 말했듯이 바깥 테두리를 말합니다. 바깥테두리를 2dp 씩 회색 계열의 색깔로 생성했습니다.
-->


부모뷰(shape 테두리 적용)

  자식뷰...

  ...많음


위와 같은 구조일때 부모뷰의 하위 자식뷰가 너무 많아 디바이스의 피지컬범위를 벗어나는 경우 XML의 shape를 통해서

적용한 border가 초기화 되는 문제가 발생한다.

주된 원인은 테두리의 corners를 주는 속성에서 발생한다.

위의 주석처리한 부분으로 코너를 줄 경우 부모의 자식뷰가 많아서 자식뷰의 범위가 화면의 피지컬범위를 벗어날 경우

XML shape가 무효화 되는 버그가 발생하는데 이를 해결하기 위해서는 위와 같이 주석처리한 코너 속성을 사용하지 말고


<corners android:radius="6dp" />


속성을 사용함으로써 해결 할 수 있다.

Comments