2012-04-18 138 views
2

有一件事情真的讓我發瘋。屏幕的佈局沒有正確地從陸地變爲肖像。屏幕方向和片段

我在我的佈局文件夾中兩個文件夾來處理方向的事情,在這.xml文件,就像這樣:

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方法,但佈局不會改變爲肖像! =/

任何人都會知道爲什麼?

回答

1

問題可能是您的肖像位於普通尺寸屏幕的文件夾中,而您的橫向位於大尺寸屏幕的文件夾中。也許你可以將layout-large-land更改爲layout-land(如果你的設備具有正常的屏幕)或者將layout改爲layout-large(如果你的設備有一個大屏幕)並且看看它是否有任何東西。 (注:即使它有一個大屏幕,把它放在佈局和佈局土地仍應該工作)。

+0

那麼...我已經改變了文件夾名稱就像你說的(兩種組合),但仍然無法正常工作!這跟以前一樣! =/ – trebew 2012-04-19 11:12:48

+0

不知道它是否意味着什麼,但我只在虛擬設備上測試過。 Android 2.3.3,API等級10,屏幕尺寸:720x960,密度:240。 – trebew 2012-04-19 11:15:43

+0

還有更多的消費? – trebew 2012-04-20 18:29:20