显示或隐藏Sherlock操作栏

6

我已经通过在清单中使用以下行将Sherlock操作栏添加到活动中:

android:theme="@style/Theme.Sherlock.Light"

我希望默认情况下可以节省屏幕空间并隐藏操作栏,只有用户在屏幕上点击时才显示。我在Aldiko应用程序中看到过这种设置,但不知道如何实现。
欢迎任何帮助。

如果你感兴趣的话,可以在Eclipse中选择新应用程序时获取全屏应用程序模板。这里有一些用于自动隐藏操作栏的漂亮代码。 - Richard Le Mesurier
2个回答

14

要隐藏,请在您的活动onCreate()方法中使用以下代码:

getSupportActionBar().hide();

在触摸事件上显示以下代码:

getSupportActionBar().show();

请查看ActionBarSherlock使用指南以获取更多详细信息。


谢谢。工作得非常好。我刚刚知道Sherlock ActionBar具有与Google的ActionBar相同的API方法。再次感谢。 - Piyush-Ask Any Difference
对我也起作用了,但是...如何仅隐藏例如共享提供者? - ieselisra

1

首先给你的活动布局(main_layout.xml)的包装节点分配一个id:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:id="@+id/containerMain"

接下来在你的活动中实现此功能:

boolean isActionBarShow=true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);

    a=getSupportActionBar();
    RelativeLayout rl= (RelativeLayout)findViewById(R.id.containerMain);
    rl.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction()==MotionEvent.ACTION_DOWN)
                if (isActionBarShow)
                {
                    a.hide();
                    isActionBarShow=false;                      
                }
                else
                {
                    a.show();
                    isActionBarShow=true;

                }
            return false;
        }
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接