在构建我的应用程序时,我开始使用Theme.Light.NoTitleBar.Fullscreen主题。我为这样的整个应用程序构建了所有布局,并让我看到了我想要的东西。布局中使用的一些drawable具有特定的大小设置,而其他一些则设置为wrap_content。
然后我决定切换到Holo灯光主题。当我这样做时,设置为wrap_content的布局中使用的所有drawable最终都会变大。几乎就像他们从一个更大的水桶中拉出来一样。事实上,有些人看起来已经被拉长了。
我知道旧主题中的背景是黑色的,但这不是问题(这实际上是包含在另一个布局中的布局文件)。显然两者之间的规模差异很大。
答案 0 :(得分:1)
根据我在这个帖子中读到的内容,这是我的猜测。
这可能是因为您将这些图像用作Button
视图的背景属性。这是不安全的,因为根据默认边距值 - 在主题中定义 - Buttons
可以根据需要拉伸背景图像。如果是这种情况,则需要使用ImageButton
视图,并使用setImage*()
方法分配图像。在那里你可以使用Carlos Robeles提到的scaleType
属性。
答案 1 :(得分:0)
我唯一想到的是,不同的主题对于图像视图的默认android:scaleType
属性具有不同的值。
请尝试将属性指定为对您有用的属性,并查看使用2个不同主题会发生什么。例如,您可以使用android:scaleType="center"
,因此您的ImageView将类似于
<ImageView
android:scaleType="center"
android:width="wrap_content"
android:height="wrap_content"
android:src="...
Yo可以看看ImageView参考中的不同比例类型: http://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType
要理解每种类型的含义并不容易,所以最好是花点时间与它们一起玩
答案 2 :(得分:0)
我的猜测是,出于某种原因,Holo主题渲染图像的分辨率低于Light。我的意思是,例如你在drawable-xhdpi
中有你的drawable,Holo将它们视为drawable-hdpi
。事实上,我没有任何证据证明这一点,但最近我一直在搞乱决议,而且差异对我来说似乎很熟悉。
如果您的drawable-xxhdpi
(最大分辨率)文件夹中没有您的绘图,您可以尝试将它们放入更高的杠杆分辨率文件夹中,看看会发生什么。
答案 3 :(得分:0)
从Android的源代码,请参阅https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml
您的按钮将在Holo.Light
中使用的样式是
<style name="Widget.Holo.Light.Button" parent="Widget.Button"> <item name="android:background">@android:drawable/btn_default_holo_light</item> <item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item> <item name="android:textColor">@android:color/primary_text_holo_light</item> <item name="android:minHeight">48dip</item> <item name="android:minWidth">64dip</item> </style>
见最后两行。它有默认minHeight
和minWeight
。这就是你的按钮伸展的原因。
解决方案
1.将minHeight
的{{1}}和minWidth
设为0
2.使用这样的自定义样式。
Button
3。使用<style name="MyHoloLightButtonStyle">
<item name="android:background">@android:drawable/btn_default_holo_light</item>
<item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item>
<item name="android:textColor">@android:color/primary_text_holo_light</item>
</style>
,然后按ImageButton
(非setImage*
)方法设置图片。