我希望我的VIEW布局可以根据方向变化进行调整。
我的清单在活动中设置为:android:configChanges="keyboardHidden|orientation"
。
我有res/layout-land
,res/layout-port
。
我的onConfigurationChanged
中有Activity
(轮换时会被调用)。
在我的Activity
我有一个ViewFlipper
,在其中我有LinearLayouts
。
当我在端口或陆地模式下启动Activity
时,视图的布局是正确的(根据
到我的res/layout-????
文件。
但是当我已经在Activity
并且我旋转手机时,我的视图布局不会改变。旋转屏幕,并且未调用活动的onCreate
,因为它应该是,onConfigurationChanged
中调用了Activity
,但屏幕始终使用{重新绘制在LinearLayout
开始时加载的{1}}。
我有一种感觉,我错过了Activity
中的某些内容,但不知道是什么。我想我需要在onConfigurationChanged
或内部的ViewFlipper
上调用一些函数。我应该打电话给哪些功能?
LinearLayout
我尝试将ViewFlipper flipper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
flipper = new ViewFlipper(getApplicationContext());
setContentView(flipper);
initLayout();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(flipper);
}
void initLayout() {
MyView myview = createMyView(0);
flipper.addView(myview, 0);
myview = createMyView(1);
flipper.addView(myview, 1);
myview = createMyView(1);
flipper.addView(myview, 1);
}
添加到flipper = new ViewFlipper(getApplicationContext());
但是在旋转后使所有内容变黑。我想我必须调用initLayout,但这会重新计算所有内容(而这正是我不想做的事情,这就是我试图用onConfigurationChanged()
做的原因,而不是android默认“dropMyActivity& createANewActivity”
解: 以前我以为我可以触发布局在旋转时刷新,但似乎我必须使用当前上下文重新创建布局(在方向更改后)
onConfigurationChanged
答案 0 :(得分:8)
如果flipper
是对最初安装的视图的引用,那就是造成问题的原因。您需要传递所需布局的资源ID,而不是手机旋转前的旧视图。然后,内容视图将绑定到新资源。也许这样的事情(模仿我对你的资源标识符的猜测):
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.flipper);
flipper = (ViewFlipper) findViewById(R.id.flipper);
}
答案 1 :(得分:0)
把它放在你的Android清单中。机器人:configChanges = “取向”
在这种情况下,试试这个并设置你的布局......
if (Intraday.this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_PORTRAIT){
}
else if (Intraday.this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_LANDSCAPE) {
}