我的布局有一个按钮。在图形布局编辑器中,按钮填充宽度并具有wrap_content高度,该高度为文本提供一些填充(如通常的按钮所做的那样)。但是,在使用此布局启动活动时,按钮有时会决定紧密地包裹文本,从而制作一个非常小的细按钮。
当我有时说时,我的意思是,有时在我的应用中执行完全相同的操作可能会也可能不会产生此结果。
我认为这个问题与启动它的活动有关,这是一个带有相机预览的活动。像其他人一样,这个应用程序使用横向组件的横向布局,使其看起来正确,同时拿着手机纵向(这是一个烂摊子,我知道,但我们想支持api7)。
因此,我的问题活动/布局是从此cameraActivity
启动的,在此过程中,方向会发生变化。我相信这是问题的根源。
有按钮布局:
<Button android:id="@+id/ContinueBtn"
android:text="@string/btn_continue"
style="@style/main_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:typeface="normal"
android:onClick="onButtonAction"
android:background="@drawable/button_animated" >
</Button>
作为参考,在设置包含此按钮的布局之前,活动会将自身设置为纵向。
总而言之,我在某些时候会得到一个薄的宽按钮。其他时候我得到一个正常,健康,非饥饿的按钮。我相信这是由于屏幕方向的改变 - 随着方向的改变,布局引擎有时会设法错过按钮的默认填充。我的问题首先是造成这种情况的原因是什么?我对吗?其次:我该如何防止这种情况?
我还应该补充一点,我认为这与我的图像自定义背景有关 - 我无法通过默认按钮实现这一点。
此外,这里有一些问题的图像: EDIT2:所以,下面的评论中提出了一些解决方案。但任何人都可以解释为什么这种效果如此不一致?是否存在某种竞争条件?
答案 0 :(得分:0)
感谢Espiandev和Wasaig为这个问题提出了一些解决方案。在我的按钮选择器中,我的问题结果是'constantSzie =“true”'(诚然,我没有提供原始问题。
关闭它将解决问题(与评论中提到的其他两个解决方案中的任何一个一样)。
然而,尽管如此,constantSize并不起作用(就我的理解而言)。我相信在代码中某处有一个错误,它获得了常量(我在这里查看了源代码,并且无法发现任何错误:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/graphics/drawable/DrawableContainer.java#DrawableContainer.DrawableContainerState.computeConstantSize%28%29)。我怀疑intrinsicSize被返回为'-1'。
我在这里提交了一个android bug报告,其中包含一个生成错误的示例项目: http://code.google.com/p/android/issues/detail?id=36432