So wie ich dies in meinen Android-Spielen handhaben ist die folgende Zeile in der onCreate() meine Tätigkeit
requestWindowFeature(Window.FEATURE_NO_TITLE);
ich die Vollbild-Fähigkeit dann deaktivieren kann anrufen und mit dem folgenden Code in meine Aktivitätsklasse (in der Regel aus einer Menü-Option genannt) (die m_contentView Variable ist die Ansicht von findViewById() unter Verwendung der ID, die Sie beim setContentView() in der beim Aufruf erstellen)
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();
}
ich verwende diese Technik in alle meine Spiele ohne Problem.
Warum sagen Sie
requestWindowFeature (Window.FEATURE_NO_TITLE); ist natürlich keine Option
?
:: EDIT ::
Nun, wenn Sie dynamisch es versuchen, während der Laufzeit der Aktivität zu zeigen und verstecken Ich bin nicht sicher, wenn Sie, dass mit dem offiziellen Fenstertitel aufgrund der Notiz tun können, die hat Ich habe erwähnt, dass Fensterfunktionen vor dem Aufruf von setContentView() aufgerufen werden müssen (link)
Eine Sache, die Sie tun können, ist Ihre eigene Titelleiste zu implementieren und diese dynamisch zu zeigen und zu verbergen ... Ich habe dieses Beispiel zusammengestellt, das sollte Setzen Sie auf die richtige Spur
Hier ist die Layout-Datei
<?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>
Und hier ist der Code für die Haupttätigkeit, die Sie unsere eigene Titelleiste erlauben wird, ein- und ausschalten
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);
}
}
});
}
}
Es ist nicht perfekt aussieht, aber man kann immer mit dem Spiel Layout etwas mehr, um das zu tun.
alt text http://i39.tinypic.com/120sfp1.png
Mein anderer Gedanke ist, wenn man nur alles ausblenden möchten ein Fortschrittsbalken zu zeigen, warum nicht die ProgressDialog benutzen?
Diese Klasse ist ziemlich einfach zu bedienen ...
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();
}
Sie wollen es also nach Belieben ein- und ausschalten können? –
Ja. Um genau zu sein, möchte ich eine Fortschrittsleiste zeigen, aber das ist mit Titel gekoppelt. – yanchenko