有没有办法隐藏窗口标题,以便它不会以全屏模式显示(
getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN,
LayoutParams.FLAG_FULLSCREEN)
)但随后会出现
getWindow().clearFlags(LayoutParams.FLAG_FULLSCREEN)
requestWindowFeature(Window.FEATURE_NO_TITLE)
当然不是一个选项,因为这不会让它回来。
答案 0 :(得分:57)
我在Android游戏中处理此问题的方法是在我的活动的onCreate()中调用以下行
requestWindowFeature(Window.FEATURE_NO_TITLE);
然后我可以在我的activity类中使用以下代码关闭全屏功能(通常从菜单选项调用)(m_contentView变量是来自findViewById()的视图,使用您在调用setContentView时使用的id ()在你的创作中)
private void updateFullscreenStatus(boolean bUseFullscreen)
{
if(bUseFullscreen)
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
}
else
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
m_contentView.requestLayout();
}
我在所有游戏中都使用这种技术而没有任何问题。
为什么这么说
requestWindowFeature(Window.FEATURE_NO_TITLE); 当然不是一个选择
:: EDIT ::
如果您在活动的生命周期中尝试动态显示和隐藏它,那么我不确定您是否可以使用官方窗口标题执行此操作,因为已经提到过有关需要先设置的窗口功能的注释setContentView()被调用(link)
你可以做的一件事是实现你自己的标题栏并动态显示和隐藏...我把这个例子放在一起,应该让你在正确的轨道上
这是布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:fadingEdgeLength="0sp"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myTitleBarLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/myTitleBarTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:paddingTop="4dip"
android:paddingBottom="4dip"
android:paddingLeft="6dip"
android:textStyle="bold"
android:shadowColor="#BB000000"
android:shadowRadius="3.0"
android:shadowDy=".25"
/>
<View
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="#CCEEEEEE"
android:padding="10dip"
/>
</LinearLayout>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
>
<!-- Insert your regular layout stuff here -->
<Button android:id="@+id/toggle_title_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Toggle Title"
/>
</ScrollView>
</LinearLayout>
以下是主要活动的代码,可让您打开和关闭我们的自定义标题栏
package com.snctln.test.HelloGridView;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class HelloGridView extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = (TextView)this.findViewById(R.id.myTitleBarTextView);
tv.setBackgroundColor(0xFF848284);
tv.setTextColor(0xFFFFFFFF);
Button toggleTitleButton = (Button)this.findViewById(R.id.toggle_title_button);
toggleTitleButton.setOnClickListener( new OnClickListener()
{
@Override
public void onClick(View v)
{
LinearLayout ll = (LinearLayout)findViewById(R.id.myTitleBarLayout);
if(ll.getVisibility() == View.GONE)
{
ll.setVisibility(View.VISIBLE);
}
else
{
ll.setVisibility(View.GONE);
}
}
});
}
}
它看起来并不完美,但您可以随时使用布局来实现这一目标。
我的另一个想法是,如果您只想隐藏所有内容以显示进度条,为什么不使用ProgressDialog?
这门课很容易使用......
progressDlg = ProgressDialog.show(context, getString(R.string.progress_dialog_title_prepare), getString(R.string.progress_dialog_body_prepare));
// do long running operation
if(operationFailed)
{
progressDlg.cancel();
}
else
{
progressDlg.dismiss();
}
答案 1 :(得分:13)
将android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
添加到清单文件中的应用程序标记将使每个活动全屏显示。
答案 2 :(得分:11)
禁用应用程序的标题(它是应用程序名称)
requestWindowFeature(Window.FEATURE_NO_TITLE)
要禁用顶部的通知栏(以便向Android应用管理器发出允许全屏的请求)
getWindow().addFlags(LayoutParams.FLAG_FULLSCREEN)
希望这有助于任何想要了解差异的人!!
答案 3 :(得分:10)
if(useFullscreen)
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
}
else
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
这对我有用..在onResume方法
答案 4 :(得分:3)
在Android 3+上,通过调用getActionBar().hide()
和getActionBar().show()
分别显示和隐藏标准ActionBar
在Android 1,2上,最好的解决方案(我猜)是为你的“标题栏”实现自定义视图并按需隐藏它(当然,在开始时调用requestWindowFeature(Window.FEATURE_NO_TITLE);
)。
答案 5 :(得分:1)
根据文档和Android开发人员谷歌组无法实现。要实现这一点,您需要在文本和进度条中添加“标题栏”布局项,并在需要时隐藏/显示。现在 - 没有别的办法,因为标题栏控件只能在setContentView调用之前完成,而不能在之后更改。