2

res/layout-land と res/layout に main.xml があります。3 x 4 (それぞれ幅、高さ) の 12 個のアイコンのグリッドがあります。ユーザーが横向きに回転する場合、3 x 2 の ViewPager と 3 x 2 の 2 ページで表示したいと考えています。したがって、res/layout には 12 項目のグリッドがあり、res/layout-land には ViewPager があり、これに PagerAdapter を与える必要があります。

私の質問は次のとおりです。またはより具体的には、たとえば、ViewPager にその PagerAdapter を与える場所はどこですか?

4

2 に答える 2

1
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if(display.getOrientation() == 0)
        setContentView(R.layout.main_portrait);
    else
        setContentView(R.layout.main_landscape); //getOrientation gives 1 here
}
于 2011-10-26T12:16:51.533 に答える
0

2つのレイアウトファイルを作成し、onCreate()の先頭(super.onCreate(bundle)行の直後)で、この行の前後にif/elseステートメントを配置できます。

setContentView(R.layout.main);

このように見えるように:

if(orientation==LANDSCAPE)
    setContentView(R.layout.main_landscape);
else
    setContentView(R.layout.main_portrait);

それ以降、Javaコードが異なる場合は、同じ条件でラップするだけです。Javaコードが縦向きに非常に依存している場合は少し時間がかかりますが、これ以上のソリューションatmは考えられません。

また、アプリケーションとその機能によっては、向きの変更時にアクティビティを再作成する必要がある場合があります。しかし、繰り返しますが、それは必要ではないかもしれません。

これがお役に立てば幸いです

于 2011-10-26T12:06:32.650 に答える