Понимание Андроида
Я не понимаю, как работают списки слоев. Я читал официальное документация с примерами но это не работает для меня, как и ожидалось. Я хочу четыре квадрата, которые должны быть дополнены 1dp, но ничего подобного не ожидается. Вот скриншот, масштабированный на 500%:
(неправильные цвета не имеют значения)
Как вы можете видеть, размер полностью неверен, и прокладки отсутствуют. Я попытался установить реальные значения, такие как ширина/высота и right / left/top / buttom, чтобы быть уверенным, что android получит точку, которую я хочу.
вот мой 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>
2 ответа:
значения для левого, верхнего, правого и нижнего измеряются от их соответствующего края.
Так вышло=0dp хиллингдон, топ=0dp хиллингдон, дно=0dp хиллингдон и справа=50dp дадут вам прямоугольник (присваиваем - 50dp) и не 50dp широкий. Поэтому большие значения для "права" фактически дадут вам меньший прямоугольник.
то же самое будет применяться к другому значению, но они будут вести себя так, как ожидалось в большинстве случаев, его просто "правильно", что может вызвать путаницу.