我正在创建一个App,我正在使用Fragments以获得UI灵活性。
在手机纵向和横向模式下,Fragmnets显示如下:
在平板电脑纵向和横向模式中,它显示如下:
我主要担心的是ACTION BAR。我只想在LANDSCAPE模式下SMARTPHONE的情况下隐藏操作栏,其中FRAGMENT B出现全屏。 我想在所有其他情况下显示动作栏,如我在图像中所示。
我搜索了整个堆栈溢出但没有找到任何解决方案。谁能帮我?提前谢谢。
答案 0 :(得分:0)
要解决此问题,您需要做两件事:
在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
}
在检查您使用智能手机或平板电脑(使用-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();
}