안드로이드의 이해
레이어 목록이 어떻게 작동하는지 이해할 수 없습니다. 몇 가지 예제와 함께 공식 문서를 읽었 지만 예상대로 작동하지 않습니다. 1dp로 채워야하는 네 개의 사각형을 원하지만 예상과 다른 것은 없습니다. 다음은 500 % 확장 된 스크린 샷입니다.
(잘못된 색상은 중요하지 않습니다.)
보시다시피 크기가 완전히 잘못되었으며 패딩이 누락되었습니다. 나는 안드로이드가 내가 원하는 포인트를 얻도록 너비 / 높이 및 오른쪽 / 왼쪽 / 위 / 부텀과 같은 실제 값을 설정하려고했습니다.
내 XML은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp">
<shape android:shape="rectangle">
<size android:width="9dp"
android:height="9dp"/>
<solid android:color="#f000"/>
</shape>
</item>
<item android:top="1dp" android:left="1dp" android:bottom="5dp" android:right="5dp">
<shape android:shape="rectangle">
<size android:width="3dp"
android:height="3dp"/>
<solid android:color="#f00"/>
</shape>
</item>
<item android:top="1dp" android:left="5dp" android:bottom="5dp" android:right="1dp">
<shape android:shape="rectangle">
<size android:width="3dp"
android:height="3dp"/>
<solid android:color="#0f0"/>
</shape>
</item>
<item android:top="5dp" android:left="1dp" android:bottom="1dp" android:right="5dp">
<shape android:shape="rectangle">
<size android:width="3dp"
android:height="3dp"/>
<solid android:color="#0f0"/>
</shape>
</item>
<item android:top="5dp" android:left="5dp" android:bottom="1dp" android:right="1dp">
<shape android:shape="rectangle">
<size android:width="3dp"
android:height="3dp"/>
<solid android:color="#f00"/>
</shape>
</item>
</layer-list>
왼쪽, 위쪽, 오른쪽 및 아래쪽 값은 각각의 가장자리에서 측정됩니다.
따라서 left = 0dp, top = 0dp, bottom = 0dp & right = 50dp는 너비가 50dp가 아니라 (match_parent-50dp) 너비 인 직사각형을 제공합니다. 따라서 "right"값이 클수록 실제로는 더 작은 사각형이됩니다.
다른 값에도 동일하게 적용되지만 대부분의 경우 예상대로 작동하며 혼란을 야기 할 수있는 "올바른"것입니다.
px
대신 사용 dp
하거나 모든 차원에 10
.
나는 이것이 왜 일어나고 있는지 정확히 알지 못한다는 것을 인정하는 것이 부끄럽지만 내 추측은 그것이 1dp
부동 px
값이고 ImageView
확장 되는 밀도와 관련이 있다는 것 입니다.
전문가의 답변을 환영합니다 :)
참조 URL : https://stackoverflow.com/questions/14436641/understanding-androids-layer-list
'Programing' 카테고리의 다른 글
.Net과 호환되는 GZIPOutputStream을 사용하여 문자열을 압축 및 압축 해제하려면 어떻게해야합니까? (0) | 2020.12.30 |
---|---|
PHP의 트레이 트 내에서 클래스 생성자를 오버로드하는 방법> = 5.4 (0) | 2020.12.30 |
Rust에서 시스템 명령을 호출하고 출력을 캡처하려면 어떻게해야합니까? (0) | 2020.12.30 |
SQL 함수에서 단일 값을 가져올 때 어떻게 NULL을 0으로 변경할 수 있습니까? (0) | 2020.12.29 |
자바 스크립트지도에 동적으로 데이터 추가 (0) | 2020.12.29 |