Programing

안드로이드의 이해

lottogame 2020. 12. 30. 07:36
반응형

안드로이드의 이해


레이어 목록이 어떻게 작동하는지 이해할 수 없습니다. 몇 가지 예제와 함께 공식 문서를 읽었 지만 예상대로 작동하지 않습니다. 1dp로 채워야하는 네 개의 사각형을 원하지만 예상과 다른 것은 없습니다. 다음은 500 % 확장 된 스크린 샷입니다.

내 suares
(잘못된 색상은 중요하지 않습니다.)
보시다시피 크기가 완전히 잘못되었으며 패딩이 누락되었습니다. 나는 안드로이드가 내가 원하는 포인트를 얻도록 너비 / 높이 및 오른쪽 / 왼쪽 / 위 / 부텀과 같은 실제 값을 설정하려고했습니다.

내 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

반응형