2

本当に夢中になっていることがあります。画面のレイアウトが土地から縦向きに正しく変更されていません。

レイアウトフォルダーには、次のように、向きと.xmlファイルを処理するための2つのフォルダーがあります。

layout\main.xml  

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">

<fragment
    android:id="@+id/menu"
    android:name="br.trebew.odonto.MenuData"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<fragment
    android:id="@+id/princ"
    android:name="br.trebew.odonto.FragList"    
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

およびその他:

layout-large-land\main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="290dp" 
    android:layout_height="fill_parent">

<fragment
    android:id="@+id/menu"
    android:name="br.trebew.odonto.MenuData"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<fragment
    android:id="@+id/princ"
    android:name="br.trebew.odonto.FragList"    
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

<fragment 
    android:id="@+id/fdetalhe"
    android:name="br.trebew.odonto.DetalheFragment"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

私のメインのJavaクラスはOdontO.javaです。これは次のとおりです。

public class OdontO extends FragmentActivity implements OnDateChangeListener, OnAgendaItemClickListener {

FragList fList;
MenuData mData;
DetalheFragment frag_detalhe;

private boolean detalhesInLine;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);   

    Log.i("LayoutOr", "Entrou no onCreate OdontO");

    mData = (MenuData) getSupportFragmentManager().findFragmentById(R.id.menu);
    fList = (FragList) getSupportFragmentManager().findFragmentById(R.id.princ);  

    frag_detalhe = (DetalheFragment) getSupportFragmentManager().findFragmentById(R.id.fdetalhe);
    detalhesInLine = (frag_detalhe != null && 
            (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE));
    if (detalhesInLine) {
        fList.enablePersistentSelection();
    }
    else if (frag_detalhe != null) {
        frag_detalhe.getView().setVisibility(View.GONE);
    }
}

画面が回転よりも縦向きの場合、正しく変化します。

問題はその逆です。画面がランドである場合、回転はレイアウトに変更を加えません。実際、onCreateメソッドを正しく呼び出しますが、レイアウトは縦向きに変更されません。= /

誰もが理由を知っているだろうか?

4

1 に答える 1

1

問題は、ポートレートが通常サイズの画面用のフォルダーにあり、ランドスケープが大型サイズの画面用のフォルダーにある可能性があります。おそらく、layout-large-land を単に layout-land に変更したり (デバイスの画面が通常の場合)、layout を layout-large に変更したり (デバイスの画面が大きい場合) して、何かが起こるかどうかを確認することができます。(注: 画面が大きくても、layout と layout-land に配置しても機能するはずです)。

于 2012-04-18T16:52:28.343 に答える