视图布局不会刷新Android的方向更改

我希望我的VIEW布局可以根据方向的变化进行调整。

我的Manifest设置为: android:configChanges="keyboardHidden|orientation"

我有res/layout-landres/layout-port

我有onConfigurationChanged在我的Activity (它被调用旋转)。

在我的Activity我有一个ViewFlipper ,里面有LinearLayouts

当我在端口或平台模式下启动Activity时,视图的布局是正确的(根据我的res/layout-????文件)。

但是,当我已经在Activity ,我旋转手机,然后我的视图布局不会改变。 屏幕被旋转了,并且活动的onCreate没有被调用,因为它应该是, onConfigurationChangedActivity被调用,但是屏幕总是用在Activity开始时加载的LinearLayout重新绘制。

我有一种感觉,我错过了onConfigurationChanged东西,但不知道是什么。 我想我需要在ViewFlipperLinearLayout调用一些函数。 我应该叫什么function?

 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()); onConfigurationChanged()但是在旋转之后,所有东西都变成黑色。 我想我将不得不调用initLayout,但这将重新计算一切(这正是我不想做的,这就是为什么我试图做onConfigurationChanged ,而不是android默认的“dropMyActivity& createANewActivity”

解决scheme:以前我以为我可以触发布局刷新旋转,但似乎我必须重新创build与当前上下文的布局(方向改变后)

 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setContentView(R.layout.category_flipper); ViewFlipper oldFlipper = viewFlipper; viewFlipper = (ViewFlipper)findViewById(R.id.categoryFlipper); for (int i = 0; i < 3; i++) { final CardLayout cl = new CardLayout(this, cardData[i]); viewFlipper.addView(cl); } cardData[viewIndex].restorePlayer(); viewFlipper.setDisplayedChild(viewIndex); oldFlipper.removeAllViews(); } 

Related of "视图布局不会刷新Android的方向更改"

如果flipper是最初安装的视图的引用,那是什么导致了这个问题。 您需要传递您想要的布局的资源ID,而不是旋转电话之前的旧视图。 内容视图将被绑定到新的资源。 也许这样(以我的猜测在您的资源标识符):

 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setContentView(R.layout.flipper); flipper = (ViewFlipper) findViewById(R.id.flipper); } 

把它放在你的Android清单中。 机器人:configChanges = “方向”

在这种情况下,只要试试这个,并设置您的布局…

  if (Intraday.this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_PORTRAIT){ } else if (Intraday.this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_LANDSCAPE) { }