9patch 导致奇怪的 layout_height 问题
Posted
技术标签:
【中文标题】9patch 导致奇怪的 layout_height 问题【英文标题】:9patch causing weird layout_height issue 【发布时间】:2012-04-04 16:52:13 【问题描述】:我有一个相当简单的布局,其中包含一个图像,以及一些包装在垂直 LinearLayout 中的文本视图。每当我将此布局的背景设置为 9patch 时,布局的高度似乎会设置为 9patch 的高度(即使 9patch 似乎成功拉伸为布局的高度。)
如果我使用纯色背景色,则布局的高度会按预期工作。
下面是 9patch 的截图:
这是一个纯背景而不是 9patch 的屏幕截图(注意文本现在如何在布局中居中):
最后,这是 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@color/show_gray"
android:gravity="center_vertical"
android:orientation="horizontal" android:weightSum="5">
<ImageView
android:id="@+id/imageView1"
android:layout_
android:layout_
android:layout_weight="4"
android:scaleType="centerCrop"
android:src="@drawable/temp_featured_banner" />
<LinearLayout
android:layout_
android:layout_
android:layout_weight="1"
android:background="#FF0000"
android:gravity="center"
android:orientation="vertical"
android:paddingLeft="30dp" >
<TextView
android:id="@+id/textView1"
android:layout_
android:layout_
android:text="Large Text"
android:textColor="@color/white" />
<TextView
android:id="@+id/textView2"
android:layout_
android:layout_
android:text="Small Text"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
...为了以防万一,这里是 draw9patch 的屏幕截图,显示了我的 9patch 可绘制对象:
我怀疑 LinearLayout 没有高于 9patch 的自然尺寸(所以没有什么可以拉伸的......),所以我将 9patch 的高度降低了 50%。问题依然存在。
有什么想法吗?
【问题讨论】:
你试过设置你的九个补丁的垂直填充区域吗? @JRaymond 图像的左上角和左下角有两个黑点。是这个意思吗? 不...九个补丁的顶部和左侧指的是图像的“可拉伸”区域。九个补丁的右边和底部定义了 content 应该去哪里 - 目前,你只是告诉它猜测(它通过将所有内容放在顶部指定的行中来猜测左点)。从我从您的图像中可以看出,您可能需要在九个补丁的右侧从上到下的实心黑线(当然,不包括角落),以及与右上角的黑点匹配的点底部 见developer.android.com/guide/topics/graphics/… 谢谢,这似乎成功了!如果您将其发布为回复,我会给您答案。 【参考方案1】:九个补丁的顶部和左侧指的是图像的“可拉伸”区域。九个补丁的右侧和底部定义了内容应该去哪里 - 目前,您只是告诉它猜测(并且它通过将所有内容放在左上角指定的行中来猜测)。从我从您的图像中可以看出,您可能需要在九个补丁的右侧从上到下的实心黑线(当然,不包括角落),以及与右上角的黑点匹配的点底部。这会告诉操作系统将内容与图像相关的位置放在哪里,以便更好地了解如何拉伸图像。
【讨论】:
【参考方案2】:在9-patch程序中,在底部和右侧画线以选择可以“折叠”的区域。可能会解决您的问题。
http://developer.android.com/guide/developing/tools/draw9patch.html
【讨论】:
以上是关于9patch 导致奇怪的 layout_height 问题的主要内容,如果未能解决你的问题,请参考以下文章