0

縦向きと横向きに異なるレイアウトを設定するコードがあります。ユーザーがデバイスを裏返した場合、アクティビティの実行中にレイアウトを変更する方法はありますか?

レイアウトを設定するコード

void SetView()
{
   int w=getWindowManager().getDefaultDisplay().getWidth();
   int h=getWindowManager().getDefaultDisplay().getHeight();

   if (w>h)
      setContentView(R.layout.mainHor);
   else
      setContentView(R.layout.mainVer);
}
4

4 に答える 4

3

res に、layout-land と layout-port という 2 つの新しいフォルダーを作成します。ランドスケープ レイアウトを layout-land に、ポートレートを layout-port に配置します。xml ファイルの名前が同じであることを確認してください。

また、コメントで述べたように、layout フォルダーに Activity のデフォルト xml もある限り、layout-land フォルダーを作成するだけで十分です。何らかの理由で Android が必要なレイアウトを別の layout-[orientation] フォルダーで見つけられない場合、レイアウトで見つかったものを取得します。

于 2012-12-02T16:47:38.277 に答える
0

これを行う

@Override
public void onConfigurationChanged(Configuration configuration) {
    super.onConfigurationChanged(configuration);
    if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                setContentView(R.layout.landscape_layout);
    } else if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT){
                setContentView(R.layout.portrait_layout);
    }
  }
于 2012-12-02T17:03:23.643 に答える
0

resという名前のフォルダーの下に 2 つのフォルダーを作成します。縦向きと横向きで別々のレイアウトを配置します。layoutlayout-land

そしてオーバーライドonConfigurationChanged

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
            setContentView(R.layout.homepage_screen);
}
于 2012-12-02T16:48:10.510 に答える
0
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                setContentView(R.layout.mainHor);
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
                setContentView(R.layout.mainVer);
    }
  }
于 2012-12-02T16:49:35.057 に答える