問題の一部は、レイヤー リスト内の個々のアイテムがドローアブルの全体のサイズに合わせてスケーリングされることです。docsで説明されているように、小さな正方形をbitmap
ドローアブルでラップすることでこれを回避できます。このようなものがうまくいくかもしれません。まず、基本的な形状を個別のドローアブルとして定義します。
drawable/square.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="1px" android:color="#fff" />
<solid android:color="#00FF0000" />
<corners android:radius="3dp" />
<size android:width="10dp" android:height="10dp"/>
</shape>
(編集:上記のことができればいいのですが、残念ながら、@Someone Somewhereがコメントで指摘したように、<bitmap>
タグ内からシェイプドローアブルを参照することはできません。正方形をこの残りの部分が機能するための実際のビットマップ グラフィック)。
次に、個々の正方形をスケーリングしないレイヤーリストを定義できます。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- first row -->
<item android:left="20dp" android:top="20dp">
<bitmap android:src="@drawable/square" android:gravity="top|left" />
</item>
<item android:left="35dp" android:top="20dp">
<bitmap android:src="@drawable/square" android:gravity="top|left" />
</item>
<item android:left="50dp" android:top="20dp">
<bitmap android:src="@drawable/square" android:gravity="top|left" />
</item>
<!-- second row -->
<item android:left="20dp" android:top="35dp">
<bitmap android:src="@drawable/square" android:gravity="top|left" />
</item>
<item android:left="35dp" android:top="35dp">
<bitmap android:src="@drawable/square" android:gravity="top|left" />
</item>
<item android:left="50dp" android:top="35dp">
<bitmap android:src="@drawable/square" android:gravity="top|left" />
</item>
<!-- third row -->
<item android:left="20dp" android:top="50dp">
<bitmap android:src="@drawable/square" android:gravity="top|left" />
</item>
<item android:left="35dp" android:top="50dp">
<bitmap android:src="@drawable/square" android:gravity="top|left" />
</item>
<item android:left="50dp" android:top="50dp">
<bitmap android:src="@drawable/square" android:gravity="top|left" />
</item>
</layer-list>
私はこれをテストしていないので、少しずれているかもしれませんが、必要なものを得るために微調整できるはずです. 重要なことは、スケーリングを取り除くことです。