我目前正面临非常具体的挑战。 事情就是这样:
我构建了一个自定义视图,我想从xml布局设置一个特定的属性。 我在视图的构造函数中获取自定义属性。 现在,在方向更改后,此构造函数不再被调用,但我为自定义属性设置了不同的值。 有没有办法自动获取这些新值,还是我必须手动设置方向更改(或再次膨胀)?
自定义视图:
public MyCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.getTheme().obtainStyledAttributes(
attrs,
R.styleable.MyCustomView,
0, 0);
try {
mAttr = a.getBoolean(R.styleable.MyCustomView_customAttr, false);
} finally {
a.recycle();
}
}
布局景观
<com.me.MyCustomView
custom:customAttr="false" />
布局画像
<com.me.MyCustomView
custom:customAttr="true" />
感谢任何建议!
答案 0 :(得分:1)
您是否在清单活动中使用android:configChanges="orientation"
?
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
如果您这样做,则要求您自行管理方向更改,因此您有责任根据需要重新创建视图(重新充气,是)。您可以在活动中的onConfigurationChanged()
来电中执行此操作。
但是如果删除此设置,默认情况下应该重新创建Activity,因此,您的布局将使用新属性再次构建...
在本主题中解释:oncreate called on every re-orientation
有关Handling Runtime changes here的更多信息。