Pergunta

Existe uma maneira de esconder o título da janela para que ele não vai ficar mostrado em tela cheia modo (

getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN,
                LayoutParams.FLAG_FULLSCREEN)

), mas, em seguida, irá aparecer em cima

getWindow().clearFlags(LayoutParams.FLAG_FULLSCREEN)

?

requestWindowFeature(Window.FEATURE_NO_TITLE)

não é uma opção de curso como este não vai permitir que para obtê-lo de volta.

Foi útil?

Solução

A maneira que eu lidar com isso em meus jogos Android é chamar a seguinte linha no onCreate () da minha actividade

requestWindowFeature(Window.FEATURE_NO_TITLE);

Posso, então, transformar a capacidade de tela cheia e desligar usando o seguinte código na minha classe de actividade (normalmente chamado de uma opção de menu) (a variável m_contentView é a vista do findViewById () usando a ID que você usou ao chamar setContentView () na sua ao criar)

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

Eu uso essa técnica em todos os meus jogos sem problema.

Por que você diz

requestWindowFeature (Window.FEATURE_NO_TITLE); não é uma opção, é claro

?

:: EDIT ::

Bem, se você está tentando dinamicamente mostrar e ocultar-lo durante o tempo de vida da atividade Não estou certo se você pode fazer isso com o título oficial Janela devido à nota que foi mencionado sobre a janela apresenta a necessidade de ser definido antes setContentView () é chamado ( ligação )

Uma coisa que você poderia fazer é implementar a sua própria barra de título e dinamicamente mostrar e esconder isso ... Eu coloquei este exemplo que deve ajustá-lo o nthe caminho certo

Aqui está o arquivo de layout

<?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>

E aqui está o código para a principal atividade que permitirá que você para alternar a nossa barra de título personalizado e desligar

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

Não parece perfeito, mas você pode sempre jogar com o layout um pouco mais para fazer isso.

text alt

Meu outro pensamento é se você quiser apenas para esconder tudo para mostrar uma barra de progresso por que não usar o ProgressDialog ?

Esta classe é muito fácil de usar ...

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

Outras dicas

Adicionando android:theme="@android:style/Theme.NoTitleBar.Fullscreen" a tag aplicativo no arquivo de manifesto fará todos os fullscreen actividade.

Para desativar o título do seu aplicativo (é o nome do aplicativo)

requestWindowFeature(Window.FEATURE_NO_TITLE)

Para desativar a barra de notificação no topo (assim um pedido para o gerente android app para permitir tela cheia)

getWindow().addFlags(LayoutParams.FLAG_FULLSCREEN)

Espero que isso ajude qualquer um que queira saber a diferença !!

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

Isso funcionou para mim .. pelo método onResume

No Android 3+ pode ser easilyy alcançado chamando getActionBar().hide() e getActionBar().show(), respectivamente, mostrar e ocultar a ActionBar padrão

No Android 1,2 a melhor solução (eu acho) é a implementação de costume View para yout "barra de título" e escondê-lo sob demanda (claro, chamando para requestWindowFeature(Window.FEATURE_NO_TITLE); no início).

que não é possível de acordo com os documentos e os android-desenvolvedores grupo Google. para implementar isso, você precisa para adicionar um item de layout 'title-bar-like' com a sua barra de texto e progresso e hide / show quando você precisar dele. agora -. nenhuma outra maneira em torno dela, já que o controle barra de título pode ser feito apenas antes da chamada setContentView e não mudou depois

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top