簡體   English   中英

片段中的操作欄-平板電腦和手機

[英]Action Bar in Fragments - Tablets and Phones

我正在創建一個使用片段的應用程序,以實現UI靈活性。

在“電話縱向和橫向”模式下,fragmnets的外觀如下: 手機風景和肖像

在Tablets縱向和橫向模式下,其顯示如下:

平板電腦肖像和風景

我主要關心的是ACTION BAR。 我只想在“片段B”顯示為“全屏”的LANDSCAPE模式下隱藏SMARTPHONE的操作欄。 我想在所有其他情況下都顯示操作欄,如我在圖像中所示。

我搜索了整個堆棧溢出,但未找到任何解決方案。 誰能幫我? 提前致謝。

要解決此問題,您需要做兩件事:

  1. 檢查您的設備是智能手機還是平板電腦。

res文件夾內創建一個名為values-sw600dp的新資源文件夾。 (這僅適用於3.2之前的Android版本,對於以前的版本,請創建values-xlarge文件夾)

然后在這里我們創建一個文件並設置以下值:

<resources>
    <bool name="isTablet">true</bool>
</resources>

然后,在標准值文件(如res / values /)中,將此類布爾值設置為false:

現在,您可以檢查您是否在平板電腦大小的設備中運行:

boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
// do a
} else {
// do b
}
  1. 如果是智能手機,請檢查方向並隱藏操作欄。

在檢查您是否使用智能手機或平板電腦(使用your-new-resource-file.xml)之后,在fragmentB onCreateView方法中,我們必須檢查方向。 如果方向是LANDSCAPE,則我們隱藏操作欄。

 boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (!tabletSize) 
{
  //Lets check orientation
  if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
  {
      getActivity().getActionBar().hide(); //getSupportActionBar().hide() if using appcompat
  }
}

希望能幫助到你

我已使用此代碼檢查我們是在SMARTPHONE還是TABLET中:

// Function to check if we are inside Phone or Tablet
public static boolean isTablet(Context context) {

    Boolean tablet = (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;

    return tablet;

    /* Returns TRUE if we are in TABLET
     * 
     * Returns FALSE if we in PHONE
     * 
     * 
     * */
}

然后,如果我在手機內:我使用以下代碼檢查屏幕方向:

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
  getActivity().getActionBar().hide(); //getSupportActionBar().hide() if using appcompat Library
}else{
  getActivity().getActionBar().show(); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM