【发布时间】:2014-11-06 22:35:38
【问题描述】:
在我的活动中,我在 ViewFlipper 中有多个视图,每个布局中都有一个按钮,如下所示:
<com.keckardt.pairs.views.SquareButton
android:id="@+id/button_multi_wifi"
android:layout_width="@dimen/buttonSize"
android:layout_height="@dimen/buttonSize"
android:layout_margin="@dimen/buttonMargin"
app:layout_column="0"
app:layout_row="1"
android:onClick="onMultiplayerWifi"
android:src="@raw/ic_wifi"
android:text="@string/wlan" />
在我的自定义视图(从 RelativeLayout 派生)中,我通过以下方式更改布局:
params = (LayoutParams) icon.getLayoutParams();
params.width = iconSize;
params.height = iconSize;
params.topMargin = topMargin;
icon.setLayoutParams(params);
但 LayoutParams 仅在 ViewFlipper 的第一个视图上“工作”。在我更改设备方向之前,其他按钮不会更新它们的布局。但是在改变方向时,永远不会调用编辑和设置 LayoutParams 的方法!而是突然显示“旧”参数。
他们孩子的CustomViews和LayoutParams有什么特别之处吗?
【问题讨论】:
-
你在哪个函数里面改变布局?
-
内部布局。但我也尝试过 onSizeChanged 和 onMeasure。在我旋转设备之前什么都不会发生。
标签: android android-layout android-custom-view device-orientation layoutparams