这是一个相当老的问题,但我认为仍然相关,所以这是我的答案:
最简单的方法
lencinhaus的答案是正确的。它有效,但可以通过更简单的方式完成:只需添加另一个背景即可。下面的例子使用了标准Button
背景更均匀的外观和感觉:
<Spinner
android:id="@+id/my_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:prompt="@string/my_prompt"
android:background="@android:drawable/btn_default"
/>
其他答案中使用的风格只不过是将背景应用于小部件。这可以直接在小部件上完成,从而无需创建新的 xml 文件。当然,如果您无论如何都要对微调器应用某种样式,那么这种方法没有任何问题。
Why?
理解其工作原理的关键在于 9-patch PNG 的描述。右侧和底部的线条用于填充,即保留一些空间不被其内容使用。在这种情况下,里面的文字。标准微调器背景使用右侧带有箭头的图像,该箭头位于可用文本区域之外。请参见下图 1 的说明:
图 1. 原始 Spinner bacground 9-patch PNG http://tinypic.com/images/404.gif
图 1. 原始Spinner
背景 9 补丁 PNG。
仅移除箭头是不够的,因为填充仍然保留在那里。您需要使用减少填充的新 9 补丁图像(参见图 2,了解基于图 1 的示例),或者使用没有太多填充的预编译 9 补丁图像之一,例如EditText
(@android:drawable/edit_text
) or Button
(@android:drawable/btn_default
).
Figure 2. Modified Spinner
bacground 9-patch PNG with reduced padding.
了解这一点将使您能够创建自己的背景Spinner
(事实上,对于任何小部件)。
对 9 个补丁文件的更好解释可以在这里找到
使用以下命令创建文件非常容易绘制9补丁可从 SDK 执行(在这里阅读相关内容),但没有什么可以阻止您使用Photoshop or Gimp反而。请记住,9 片 PNG 只是普通 PNG!唯一需要注意的是确保您仅绘制像素的外部线,并且其余像素完全透明。靠近边界的抗锯齿可能会产生意想不到的结果。