我有
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView android:layout_height="wrap_content"
android:layout_width="wrap_content" android:id="@+id/ImageView01"
android:src="@drawable/phone80"></ImageView>
<ImageView android:id="@+id/ImageView02"
android:layout_height="wrap_content" android:src="@drawable/underline"
android:layout_width="fill_parent" android:layout_gravity="fill_vertical|fill_horizontal"></ImageView>
</LinearLayout>
第一张图像是固定大小的图像,根本不应缩放。它的右侧图像应水平缩放到最大空间。源指向有效的.9.png文件。不幸的是,它总是只显示其原始大小。我必须设置什么属性? ImageView是否是正确的对象?
谢谢, 甲
答案 0 :(得分:52)
只需将android:scaleType="fitXY"
添加到ImageView
即可。例如myimage.9.png:
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/myimage"
android:scaleType="fitXY" />
答案 1 :(得分:22)
请改用android:background
。如果它只是一个下划线,您可以使用View
而不是ImageView
。至于填充屏幕的其余部分,您可能希望改为使用TableLayout
。
另外,请确保您的9补丁正确无误。 1px边必须是黑色的。 #000
答案 2 :(得分:1)
同时检查以确保两侧的刻度线不会一直延伸到图像的角落。我知道那里有黑色像素并没有多大意义,但我认为Android会忽略它们,但它实际上阻止了缩放工作。它还会在输出窗口中显示“ERROR:9-patch image xxx.9.png malformed”消息,但您可能没有注意到这一点。我一拿出角落里的像素就开始为我工作了。
答案 3 :(得分:0)
尝试使用setImageResource(9patchResourceID)而不是setImageBitmap或setImageBackground,它可以工作:)