android – 在xml drawable中绘制多个矩形

前端之家收集整理的这篇文章主要介绍了android – 在xml drawable中绘制多个矩形前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图弄清楚如何在 android xml drawable中创建一个3×3行的小矩形.
这不是真正让我接近(2个小的,但它们重叠):
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3.  
  4. <item android:left="20dp" android:top="20dp" android:right="25dp" android:bottom="25dp" >
  5. <shape android:shape="rectangle">
  6. <stroke android:width="1px" android:color="#fff" />
  7. <solid android:color="#00FF0000" />
  8. <corners android:radius="3dp" />
  9. </shape>
  10. </item>
  11.  
  12.  
  13. <item android:left="30dp" android:top="30dp" android:right="35dp" android:bottom="25dp" >
  14. <shape android:shape="rectangle">
  15. <stroke android:width="1px" android:color="#fff" />
  16. <solid android:color="#00FF0000" />
  17. <corners android:radius="3dp" />
  18. <size android:width="10dp"
  19. android:height="10dp"/>
  20. </shape>
  21. </item>
  22.  
  23.  
  24. </layer-list>

解决方法

部分问题是图层列表中的各个项目会缩放到可绘制的整体大小.如 the docs中所述,您可以通过将小方块包装在可绘制的位图中来解决此问题.这样的事可能有用.首先,将基本形状定义为单独的drawable:

绘制/ square.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android">
  3. <stroke android:width="1px" android:color="#fff" />
  4. <solid android:color="#00FF0000" />
  5. <corners android:radius="3dp" />
  6. <size android:width="10dp" android:height="10dp"/>
  7. </shape>

(编辑:如果你能做到这一点会很好,但不幸的是,正如@Someone Somewhere在评论中指出的那样,你不能从< bitmap>标签中引用形状drawable.你必须创建正方形作为其余部分的实际位图图形.)

然后,您可以定义不会缩放单个方块的图层列表:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <!-- first row -->
  4. <item android:left="20dp" android:top="20dp">
  5. <bitmap android:src="@drawable/square" android:gravity="top|left" />
  6. </item>
  7. <item android:left="35dp" android:top="20dp">
  8. <bitmap android:src="@drawable/square" android:gravity="top|left" />
  9. </item>
  10. <item android:left="50dp" android:top="20dp">
  11. <bitmap android:src="@drawable/square" android:gravity="top|left" />
  12. </item>
  13.  
  14. <!-- second row -->
  15. <item android:left="20dp" android:top="35dp">
  16. <bitmap android:src="@drawable/square" android:gravity="top|left" />
  17. </item>
  18. <item android:left="35dp" android:top="35dp">
  19. <bitmap android:src="@drawable/square" android:gravity="top|left" />
  20. </item>
  21. <item android:left="50dp" android:top="35dp">
  22. <bitmap android:src="@drawable/square" android:gravity="top|left" />
  23. </item>
  24.  
  25. <!-- third row -->
  26. <item android:left="20dp" android:top="50dp">
  27. <bitmap android:src="@drawable/square" android:gravity="top|left" />
  28. </item>
  29. <item android:left="35dp" android:top="50dp">
  30. <bitmap android:src="@drawable/square" android:gravity="top|left" />
  31. </item>
  32. <item android:left="50dp" android:top="50dp">
  33. <bitmap android:src="@drawable/square" android:gravity="top|left" />
  34. </item>
  35. </layer-list>

我没有测试过这个,所以它可能有点偏,但你应该能够调整它以获得你想要的东西.重要的是摆脱缩放.

猜你在找的Android相关文章