我注意到在运行Android 4.1的Nexus 7平板电脑上有一些填充问题.具体来说,我有一个背景绘制填充,创建一个外部笔划:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<stroke
android:width="1dp"
android:color="#59000000" />
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
这补充了1dp白色内部笔画.所以它应该是整个图像周围的正方形2 dp边框:
我已经在实际的nexus设备和其他几个设备以及7英寸果冻豆模拟器上进行了测试:
首先,这是4.1 7英寸仿真器的工作版本:

外围的边界是均匀的,并围绕整个图像.这就是它在我拥有的所有其他设备上的工作方式.
Nexus 7:

灰色是背景颜色,但您可以看到右侧和底部填充没有得到遵守.现在,图像遮挡了边界.
如果重要,那么这些是GridView的子代.不知道是否有人看过这些问题或有关于如何解决这些问题的想法.
这似乎是stroke在 XML 可绘制对象中生成时的一个错误。经过多次尝试,我将范围缩小到了这一点;即使以像素为单位指定,它似乎也使形状的下侧和右侧的笔画大小不正确。如果我只是将笔划宽度更改为2dip而不是1dip(所有其他内容保持原样),则结果如下:

这是border.xml 我用于后图像背景的:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<stroke
android:width="2dp"
android:color="#59000000"/>
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
再说一遍,这只是你的,笔画宽度放大了。好处是,这根本不会改变预期结果,因为填充保持不变。事实上,您可以将stroke标签更改为solid并仍然得到相同的结果(但是,如果您的图像包含透明度,您会在透明区域看到纯色背景)。
尝试一下;让我知道它对您有何作用!
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |