Android की<परत-सूची> को समझना




xml-drawable android-drawable (2)

बाएं, ऊपर, दाएं और नीचे के मूल्यों को उनके संबंधित किनारे से मापा जाता है।

तो बायाँ = 0dp, top = 0dp, bottom = 0dp & right = 50dp आपको एक आयत देगा जो (match_parent - 50dp) चौड़ा है और 50dp चौड़ा नहीं है। इसलिए "सही" के लिए बड़े मूल्य वास्तव में आपको एक छोटी आयत देंगे।

वही दूसरे मूल्य पर लागू होगा, लेकिन ये ज्यादातर मामलों में अपेक्षा के अनुरूप व्यवहार करेंगे, इसका सिर्फ "सही" है जो भ्रम पैदा कर सकता है।

मुझे समझ नहीं आया कि परत-सूचियाँ कैसे काम करती हैं। मैं कुछ उदाहरणों के साथ आधिकारिक दस्तावेज पढ़ता हूं लेकिन यह मेरे लिए उम्मीद की तरह काम नहीं करता है। मुझे चार वर्ग चाहिए जो 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>

या तो आप dp बजाय px उपयोग करें या 10 सभी आयामों को गुणा करें।

मुझे यह स्वीकार करने में शर्म आती है कि मैं वास्तव में नहीं जानता कि यह क्यों हो रहा है, लेकिन मेरा अनुमान है कि इसका घनत्व के साथ कुछ करना है जहां 1dp एक अस्थायी px मान है और ImageView को छोटा किया जाता है।

विशेषज्ञ जवाब का स्वागत किया है :)







layer-list