Android 碎片中的操作栏-平板电脑和手机

Android 碎片中的操作栏-平板电脑和手机,android,android-fragments,android-actionbar,Android,Android Fragments,Android Actionbar,我正在创建一个应用程序,在其中我使用片段以实现UI灵活性 在手机纵向和横向模式下,Fragmnet如下所示: 在平板电脑的纵向和横向模式下,显示如下: 我主要关心的是动作吧。我只想在智能手机处于横向模式时隐藏动作栏,此时片段B会全屏显示。 我想在所有其他情况下显示动作栏,如图所示 我已经搜索了整个堆栈溢出,但没有找到任何解决方案。有人能帮我吗?提前感谢。要解决此问题,您需要做两件事: 检查您的设备是智能手机还是平板电脑。 在res文件夹中创建一个名为values-sw600dp的新资源文件夹。

我正在创建一个应用程序,在其中我使用片段以实现UI灵活性

在手机纵向和横向模式下,Fragmnet如下所示:

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

我主要关心的是动作吧。我只想在智能手机处于横向模式时隐藏动作栏,此时片段B会全屏显示。 我想在所有其他情况下显示动作栏,如图所示


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

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

检查您的设备是智能手机还是平板电脑。 在res文件夹中创建一个名为values-sw600dp的新资源文件夹。这仅适用于3.2之前的Android版本,对于以前的版本,请创建values xlarge文件夹

然后在这里创建一个文件并设置以下值:

<resources>
    <bool name="isTablet">true</bool>
</resources>
如果是智能手机,请检查方向并隐藏操作栏。 在片段B中的onCreateView方法中,在使用your-new-resource-file.xml检查是否使用智能手机或平板电脑后,我们必须检查方向。如果方向为横向,则隐藏操作栏

 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
  }
}

希望有帮助

我用这些代码检查我们是在智能手机还是平板电脑上:

// 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(); 
}

你应该编辑你自己的问题,但无论如何,我认为你应该很好去!然后,在标准值文件res/values/中,将该布尔值设置为false:???你这句话是什么意思?请详细说明?我已编辑了我的答案,我的意思是,您必须创建多个新资源文件,每个文件夹大小1个,在资源的res文件夹标准文件夹中,您必须将isTablet值定义为false,在sw600dp文件夹中,您必须将其设置为true。我已接受您的答案。。请把我的问题标为重要或更高。如果你认为这是一个好问题
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
  getActivity().getActionBar().hide(); //getSupportActionBar().hide() if using appcompat Library
}else{
  getActivity().getActionBar().show(); 
}