如何在Android中隐藏基于布局的actionbar

如何在Android中隐藏基于布局的actionbar,android,android-actionbar,Android,Android Actionbar,我想禁用actionBar,当布局为较小的设备更改时,但我不知道如何做到这一点。也许我会的 ActionBar actionBar = getSupportActionBar(); actionBar.hide(); 但是如何检查布局呢?很简单,您可以使用此示例获得屏幕的大小,然后根据需要隐藏操作栏 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); d

我想禁用actionBar,当布局为较小的设备更改时,但我不知道如何做到这一点。也许我会的

ActionBar actionBar = getSupportActionBar();
actionBar.hide();

但是如何检查布局呢?

很简单,您可以使用此示例获得屏幕的大小,然后根据需要隐藏
操作栏

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(dm.widthPixels/dm.xdpi,2);
double y = Math.pow(dm.heightPixels/dm.ydpi,2);
double screenInches = Math.sqrt(x+y);
它将以英寸为单位显示屏幕的大小。如果你想要像素,你可以使用

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

希望对您有所帮助

也许您最好的方法是将res/values的style.xml复制到res/values mdpi(或您所需的布局大小),并将AppTheme更改为style+.NoActionBar

例如:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

如果要检查加载的布局,可以向布局中添加标记,例如:

ldpi布局:

<RelativeLayout 
    android:width="match_parent"
    android:height="match_parent"
    android:id="@+id/mainlayout"
    android:tag="ldpi" >
<RelativeLayout 
    android:width="match_parent"        
    android:height="match_parent"
    android:id="@+id/mainlayout"
    android:tag="mdpi" >

在这种情况下有许多选择

首先,您确定您的应用程序在没有操作栏的情况下可用吗?e、 g.为什么大型设备上需要一个操作栏,而小型设备上却不需要它

你在使用安卓系统吗(我推荐)?如果是这样,您可以选择在布局xml文件中较小屏幕的布局中不包含工具栏。e、 g.将工具栏包括在
layout large
目录中,并将其从
layout small
中排除。然后,当您在活动/片段中绑定视图时,处理找不到工具栏视图的情况

Toolbar toolbar = (Toolbar)findViewById(R.id.myToolbar);
if(toolbar != null) {
    //set up my toolbar here which might include
    setSupportActionBar(toolbar);
}

另一种选择是对不同大小的屏幕使用多种样式。其中,对于大屏幕,您的风格是
主题.AppCompat.Light.darkaActionBar
,对于小屏幕,您的风格是
主题.AppCompat.Light.NoActionBar
使用显示指标

 public void setAppInvisible() {
        actionBar.setVisibility(View.INVISIBLE);
       // Or actionBar.hide();

    }

DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;

if(screenWidth < 500){
    setAppInvisible();
}
public void setAppInvisible(){
actionBar.setVisibility(View.INVISIBLE);
//或actionBar.hide();
}
DisplayMetrics dm=新的DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth=dm.widthPixels;
如果(屏幕宽度<500){
setAppInvisible();
}
 public void setAppInvisible() {
        actionBar.setVisibility(View.INVISIBLE);
       // Or actionBar.hide();

    }

DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;

if(screenWidth < 500){
    setAppInvisible();
}