窗口创建后如何隐藏Android标题栏?

时间:2011-08-24 22:40:41

标签: android

How to hide the title bar through code in android描述了一种隐藏窗口标题栏的简单方法,但需要在调用setContentView之前完成。如果我想稍后再做怎么办?在我的情况下,我想在网页浏览完成加载内容之后这样做,我不再需要在标题栏中显示进度。

5 个答案:

答案 0 :(得分:2)

以下是一些涉及完全放弃标题栏的选项:

  • 使用LayoutInflater对布局进行充气。此布局基本上是LinearLayoutRelativeLayout,其中包含标题栏的所有组件。
  • 或者如果这听起来像是一个过多的hastle,你可以在活动的xml中创建标题栏,并将可见性设置为消失并使用{{1当web视图加载

伪代码:

titleBarLayout.setVisibility(View.VISIBLE);

就个人而言,我会选择RelativeLayout activityLayout = (RelativeLayout) findViewById(R.id.my_layout); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); public void onWebViewFinishLoading() { LinearLayout myTitleBar = inflater.inflate(R.layout.my_title_bar, activityLayout, false); //Set the view to the top of the screen RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.ALIGN_PARENT_TOP); myTitleBar.setLayoutParams(params); //set up buttons, listeners, etc. } 选项。但这取决于你。我相信你也可以添加动画到你的标题栏中显示任何一个选项,这可能是一个很好的补充。


或者在LayoutInflater之前调用此方法:

setContentView

如果不支持自定义标题栏,则返回false,因此您可能需要检查该标题栏。这是在requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 之后调用的:

setContentView

将xml文件的父布局(包含所有视图的getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_bar); LinearLayout)分配为RelativeLayout的ID。

现在,

android:id="@+id/custom_title_layout"

并将标题栏切换为使用或不使用:

LinearLayout titleBarLayout = (LinearLayout) findViewById(R.id.custom_title_layout);

答案 1 :(得分:2)

如果您使用的是API 11及以上版本

ActionBar actionBar = getActionBar();
actionBar.hide(); // slides out
actionBar.show(); // slides in

答案 2 :(得分:1)

如果要在活动中隐藏标题栏:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    ...
}

请参阅http://mgmblog.com/2008/12/08/hide-the-title-bar-in-an-android-view-by-using-the-window-class/

答案 3 :(得分:0)

这对我有用

onCreate

中的

this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);

然后在WebViewClient

    myWebView.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            activity.setTitle("Loading...");
            View title = getWindow().findViewById(android.R.id.title);
            View titleBar = (View) title.getParent();
            titleBar.setBackgroundColor(Color.BLACK);
            titleBar.setVisibility(View.VISIBLE);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            activity.setTitle("");
            View title = getWindow().findViewById(android.R.id.title);
            View titleBar = (View) title.getParent();
            titleBar.setVisibility(View.GONE);
        }

    });

答案 4 :(得分:-1)

在xml中使用

<activity android:name=".ActivityName" 
      android:theme="@android:style/Theme.NoTitleBar">