1

私のアプリケーションでは、3 つのパネルがあるアコーディオン レイアウトを使用しており、デバイスの高さのサイズに合わせてパネル (texview) のサイズを設定しようとしています。これは、画面の向きに変更があると機能しません。横向きの場合、デバイスの高さに応じてビューのサイズが変化しません。これについて教えてください。

これは私のコードです

if(layoutView.getId() == R.id.Advertitletext)
{
    openLayout = panel1;
    v = panel1.getVisibility();

    hideThemAll();
    if(v != View.VISIBLE)
    {
        panel1.setVisibility(View.VISIBLE);
        params = advertoutput.getLayoutParams();
        params.height = parentLinear.getHeight()-msgrecvtitle.getHeight()-msgsenttitle.getHeight()-mLogCheck.getHeight()-PearActivity.peartabs.getHeight();
        advertoutput.setLayoutParams(params);
    }

}

これは私の onConfiguration() メソッドです

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        ViewTreeObserver observer = parentLinear.getViewTreeObserver();
        observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

            @Override
            public void onGlobalLayout() {

                parentLinear.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                if(openLayout==panel1){
                    params = advertoutput.getLayoutParams();
                    params.height = parentLinear.getHeight()-msgrecvtitle.getHeight()-msgsenttitle.getHeight()-mLogCheck.getHeight()-PearActivity.peartabs.getHeight();
                    advertoutput.setLayoutParams(params);
                }
                else if(openLayout == panel2){
                    params = msgrecvoutput.getLayoutParams();
                    params.height = parentLinear.getHeight()-adverttitle.getHeight()-msgsenttitle.getHeight()-mLogCheck.getHeight()-PearActivity.peartabs.getHeight();
                    msgrecvoutput.setLayoutParams(params);

                }else   if(openLayout == panel3){
                    params = msgsentoutput.getLayoutParams();
                    params.height = parentLinear.getHeight()-adverttitle.getHeight()-msgrecvtitle.getHeight()-mLogCheck.getHeight()-PearActivity.peartabs.getHeight();
                    msgsentoutput.setLayoutParams(params);
                }

            }
        });

    }
4

1 に答える 1

1

AndroidManifest向きの変更を処理するシステムが必要であることをファイルに含める場合:

android:configChanges="orientation"

コードを の中に実装するonConfigurationChanged()必要がonResume()あります。

于 2012-12-17T09:11:21.500 に答える