如何在Android中基于布局隐藏操作栏

时间:2016-05-01 17:18:14

标签: android android-actionbar

我想在为较小的设备更改布局时禁用actionBar,但我不知道该怎么做。可能我会做

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

但如何检查布局?

5 个答案:

答案 0 :(得分:1)

很简单,您可以使用此示例来获取屏幕大小,然后根据需要隐藏ActionBar

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

希望有所帮助

答案 1 :(得分:1)

在这种情况下有很多选择。

首先,您确定没有操作栏可以使用您的应用程序吗?例如为什么在较小的设备上没有它时需要在大型设备上使用操作栏?

您使用的是Android Toolbar(我建议使用)吗?如果是这样,您可以选择不在布局中包含工具栏,以用于布局xml文件中的较小屏幕。例如在layout-large目录中包含工具栏,并将其从layout-small中排除。然后,当您在活动/片段句柄中绑定视图时,找不到工具栏视图的情况。

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

另一个选择是为不同尺寸的屏幕使用多种样式。对于大屏幕,您的样式为Theme.AppCompat.Light.DarkActionBar,小屏幕为Theme.AppCompat.Light.NoActionBar

答案 2 :(得分:0)

您最好的方法可能是将res / values的style.xml副本复制到res / values-mdpi(或所需的布局大小),并将AppTheme更改为您的样式+ .NoActionBar。

示例:

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

答案 3 :(得分:0)

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

ldpi布局:

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

mdpi布局:

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

等等。

在您的程序代码中,您现在可以检查布局具有哪个标记:

RelativeLayout layout = (RelativeLayout) findViewById(R.id.mainlayout);
String tag = layout.getTag();
if(tag != null && tag.equals("ldpi")) {
    // Ldpi Layout loaded, hide actionbar

}

答案 4 :(得分:0)

使用 DisplayMetrics

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