我希望完成看起来像这里的底部的东西(对于所有四个角落,但我只有图像的底部向您展示):
到目前为止我所拥有的:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/orange_tile"
android:tileMode="repeat"
android:dither="true"
android:gravity="center" />
</item>
<item>
<shape android:shape="rectangle">
<corners android:radius="2dp"/>
<stroke android:color="@color/white" android:width="0.5dp" />
</shape>
</item>
</layer-list>
然而,根据预览,每个角落都有一个 tiiiny 像素:
那么,我该如何剪辑这些角落?可见的中风不是它,实际上并不需要......
事情尝试了:在项目中添加一个实体,与我想要的完全相反。可能有一个掩蔽技巧......
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/orange_tile"
android:tileMode="repeat"
android:dither="true"
android:gravity="center" />
</item>
<item>
<shape android:shape="rectangle">
<color android:color="@color/white" />
<corners android:radius="2dp"/>
<stroke android:color="@color/white" android:width="0.5dp" />
</shape>
</item>
</layer-list>
瓷砖:
答案 0 :(得分:2)
我可以想到几个选择。
只需添加一个背景矩形即可隐藏角落:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/orange_tile"
android:tileMode="repeat"
android:dither="true"
android:gravity="center" />
</item>
<item>
<shape android:shape="rectangle">
<corners android:radius="2dp"/>
<stroke android:color="@color/white" android:width="0.5dp"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<corners android:radius="0dp"/>
<stroke android:color="@color/white" android:width="0.5dp"/>
</shape>
</item>
</layer-list>
您可以将角落矩形移出视图并使其变大:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/icon_bg"
android:tileMode="repeat"
android:dither="true"
android:gravity="center" />
</item>
<item android:top="-1.5dp" android:bottom="-1.5dp"
android:left="-1.5dp" android:right="-1.5dp"
>
<shape android:shape="rectangle">
<corners android:radius="2dp"/>
<stroke android:color="@color/white" android:width="1.5dp"/>
</shape>
</item>
</layer-list>
您需要微调此案例的偏移量。这个有点hacky,因为它缩小了tile内容。您可能希望在进行微调时使用android:scaleX="float"
和android:scaleY="float"
缩放图像。
如果您对获得圆角的代码解决方案持开放态度,您还可以尝试RoundedBitmapDrawable类。
float cornerRadius = 2f * Resources.getSystem().getDisplayMetrics().density;
Bitmap tileBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.orange_tile);
RoundedBitmapDrawable roundedTileDrawable =
RoundedBitmapDrawableFactory.create(getResources(), tileBitmap);
roundedTileDrawable.setCornerRadius(cornerRadius);