片段中的动作栏 - 平板电脑和手机

时间:2014-11-18 06:18:31

标签: android android-fragments android-actionbar

我正在创建一个App,我正在使用Fragments以获得UI灵活性。

在手机纵向和横向模式下,Fragmnets显示如下: Phone Landscape and Portrait

在平板电脑纵向和横向模式中,它显示如下:

Tablets Portrait and Landscape

我主要担心的是ACTION BAR。我只想在LANDSCAPE模式下SMARTPHONE的情况下隐藏操作栏,其中FRAGMENT B出现全屏。 我想在所有其他情况下显示动作栏,如我在图像中所示。

我搜索了整个堆栈溢出但没有找到任何解决方案。谁能帮我?提前谢谢。

2 个答案:

答案 0 :(得分:0)

要解决此问题,您需要做两件事:

  1. 检查您的设备是智能手机还是平板电脑。
  2. values-sw600dp文件夹中创建名为res的新资源文件夹。 (这仅适用于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. 如果是智能手机,请检查方向并隐藏操作栏。
    2. 在检查您使用智能手机或平板电脑(使用-new-resource-file.xml)后onCreateView中的fragmentB方法,我们必须检查方向。如果方向是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
        }
      }
      

      希望有所帮助

答案 1 :(得分:0)

我已使用此代码检查我们是否在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(); 
}