7

我注意到运行 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>

这辅以 1dp 白色内笔画。所以它应该是整个图像周围的方形 2 dp 边框:

我已经在实际的 nexus 设备和其他几个设备以及 7 英寸果冻豆模拟器上对其进行了测试:

首先,这是 4.1 7 英寸模拟器的工作版本: 这是 4.1 的 7 英寸平板电脑模拟器

外部的边界是均匀的,并且围绕整个图像。这也是它在我拥有的所有其他设备上的工作方式。

联结 7:

填充混乱的图像

灰色是背景颜色,但您可以看到右侧和底部的填充没有得到尊重。边框现在被图像遮住了。

如果重要的话,这些是 GridView 的子级。想知道是否有人看到这些问题或对如何解决这些问题有想法。

4

1 回答 1

2

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>

同样,这只是您的笔画宽度扩大了。好消息是,这根本不会改变预期结果,因为填充保持不变。事实上,您可以将stroke标签更改为solid并且仍然具有相同的结果(但是,如果您的图像包含透明度,您会在透明区域看到纯色背景)。

试试这个;让我知道它是如何为你工作的!

于 2012-07-26T04:19:46.157 回答