如何让九宫格图像只在水平方向上扩展?

3
我有一个Nine Patch图片,我希望在视图中垂直居中并仅水平扩展。我尝试在Nine Patch上放置两个可扩展区域(一个在上方,一个在下方),但是根据屏幕的密度,如果视图的高度是偶数像素,并且Nine Patch的高度是奇数像素,则图像会略微破裂。有什么想法吗?谢谢。
4个回答

5
一个有效的Nine Patch图片必须在顶部和左侧至少有一个可扩展区域,您可以在右侧和下方绘制区域以指定填充区域,请参见此网页
如果您想让您的Nine Patch图片只水平扩展,您需要准备带有所需高度和极窄宽度(只有一个像素)的原始图片,并在顶部和左侧绘制一个点。请注意,我们在左侧指定的可扩展区域仅是为了使其成为有效的Nine Patch。现在,您可以将该图片放入布局中(将布局的高度设置为您的图片高度),为图片设置android:layout_graviy="center_vertical",然后您将得到水平扩展的图片。

根据您的图像,中心的一个小点可能是更好的选择。 - Ravi Vyas
你试过了吗?我认为这是不可能的。对于一个九宫格图片,你只能在图像的边缘放置点。 - neevek
抱歉让您感到困惑,实际上我是在谈论左边缘的中心位置 :) - Ravi Vyas
没有顶部的点,它不是有效的九宫格图案,Eclipse 不喜欢它,你会得到编译时错误。"在边缘找不到标记区域。- 在顶部边缘找到。" - neevek

1
我想要水平扩展而不破坏左右两侧的设计。我所做的是在图像的上下各添加额外的1像素(透明)。之后,在左侧,我在添加了额外填充的行上添加了黑点。以及在图像顶部添加可扩展区域。我对所有4种不同密度都这样做了,效果很好 :)
借助 radley's scale and fill 的帮助,我只需在左侧画出黑线。
为了使其垂直居中,如您在帖子中提到的,只需为线性布局添加 android:layout_graviy="center_vertical" 或为相对布局添加 android:layout_centerVertical="true"
希望这有所帮助。

0
如果您不希望图像在垂直方向上扩展,那么为什么不能直接使用fill_parent而不使用9-patch呢?

0
请看下面的示例示例链接,您可以设置可扩展区域并拥有水平扩展的九宫格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接