2014-05-05 22 views
0

我想創建一個應用程序的片段之前將顯示旋轉(以避免更改爲橫向和肖像,因爲我希望避免再次創建活動)。如何正確地使一個片段旋轉

當顯示第一個片段(列表)時,用戶選擇一個選項,然後顯示第二個片段,就好像它是縱向的。 要做到這一點我在第二個片段的XML文件補充說:

android:rotation="90" 

然而,這似乎並沒有正常工作,它看起來像屏幕在肖像模式下繪製,然後通過90度旋轉然後顯示,這具有右側和左側具有大空白的效果,並且片段的標題不能正確顯示。

有人可以幫助我解決這個問題,或者幫助我解決顯示問題,或者向我展示替代方案嗎?

回答

0

我終於找到了答案 Change Screen Orientation programmatically using a Button

,但因爲它是一個片段,我想不旋轉整個屏幕的代碼是這樣的:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    if (mView != null) return mView; //I use this because I use the same fragment , if you use different fragments remove this 
    mView = (LinearLayout) inflater.inflate(R.layout.fragment_customer_card_view, container, false); 
    int w = container.getWidth(); 
    int h = container.getHeight(); 
    mView.setRotation(90); 
    mView.setTranslationX((w - h)/2); 
    mView.setTranslationY((h - w)/2); 
    ViewGroup.LayoutParams lp = mView.getLayoutParams(); 
    lp.height = w; 
    lp.width = h; 
    mView.requestLayout(); 
    return mView; 
} 

希望它可以幫助別人,將來

0

在你想要方向的片段中使用它。

getActivity().setRequestedOrientation(
      ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

如果你的碎片,只有一個片段U基於用戶wantin肖像別人應該是兼容的,則一定要在片段,其中u要縱向總是和其他fragmetns上面給使用

getActivity().setRequestedOrientation(
       ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); 
+0

我不認爲它會工作,看到我不想旋轉整個活動,只是片段 我通常在平板電腦中使用這個片段,但是當涉及到手機時,我想旋轉這個 – Cruces

0

設置orientation="horizontal"沒有辦法嗎?

更一般地說,重新創建活動對您來說不應該是一筆巨大的交易。您應該能夠堅持所有更改,然後將它們從傳遞到onCreate的Bundle中取出。如果這是一個很大的問題,我會重新考慮一下你在應用中做出的一些設計選擇。

+0

不,因爲這只是改變活動中視圖的方向,它不會改變字母的方向。 至於on_create的東西,我不想旋轉整個屏幕(在頂部有一個小頭,我希望看起來像是在肖像中),只需要旋轉屏幕內的片段即可 – Cruces