-1

我有一个有按钮的布局。在图形布局编辑器中,按钮填充宽度并具有 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:所以,在下面的评论中提出了一些解决方案。但谁能解释为什么这种效果如此不一致?有某种比赛条件吗?

4

1 回答 1

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 错误报告,其中包括一个生成错误的示例项目: http ://code.google.com/p/android/issues/detail?id=36432

于 2012-08-17T11:10:45.747 回答