【问题标题】:How to have a nine patch image only expand horizontally?如何让九个补丁图像仅水平扩展?
【发布时间】:2012-03-10 00:18:01
【问题描述】:

我有一个九个补丁图像,我想在视图中垂直居中,只让它水平扩展。

我尝试在九个补丁上放置两个可扩展区域(一个在上面,一个在下面),但是根据屏幕的密度,如果视图最终是偶数像素高并且九个补丁是奇数高,然后图像会稍微破裂。

有什么想法吗?

谢谢

【问题讨论】:

    标签: android nine-patch


    【解决方案1】:

    一个有效的九个补丁图像必须至少有一个顶部和左侧的可扩展区域,您在右侧和下方绘制的区域用于指定填充,请查看this

    如果你只希望你的九个补丁图像水平扩展,你必须准备你想要的高度和宽度为一个像素的原始图像,并在顶部画一个点,在左边画一个点,请注意我们在左侧指定的可扩展区域只是为了使其成为有效的九个补丁。现在你可以把图片放到一个布局中(布局的高度设置为你的图片高度),为图片设置android:layout_graviy="center_vertical",然后你的图片就可以水平展开了。

    【讨论】:

    • 根据您的图像,中心的一个点可能是更好的选择。
    • 你试过了吗?我不认为这是可能的。对于九个补丁图像,您只能在图像边缘放置点。
    • 对不起,我说的是左边缘的中心 :)
    • 顶部没有点,这不是一个有效的九个补丁,eclipse不喜欢它,你会得到一个编译时错误。 No marked region found along edge. - Found along top edge.
    【解决方案2】:

    我想在不破坏左右两侧设计的情况下横向扩展。 我所做的是在图像的顶部和底部添加额外的 1px(透明)。 之后,在左侧,我在添加了额外填充的行上添加了黑点。以及图像顶部的可扩展区域。 我对所有 4 种不同的密度都做了这个,效果很好:)

    radley's scale and fill的帮助下,我只是在左侧画了黑线。

    要使其垂直居中,如您的帖子中所述,只需添加 android:layout_graviy="center_vertical" 用于线性布局或 android:layout_centerVertical="true" 用于相对布局。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      如果你不希望你的图像垂直扩展,那你为什么不能直接使用 9-patch 保留另一个作为 fill_parent。

      【讨论】:

        【解决方案4】:

        看看下面的例子Example Link, 可设置可扩展区域,横向扩展九个补丁

        【讨论】:

          猜你喜欢
          • 2012-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-14
          • 1970-01-01
          • 2012-10-03
          相关资源
          最近更新 更多