with - menu android html




Come nascondere la barra del titolo per un'attività in XML con tema personalizzato esistente (20)

Aggiungi entrambi quelli per il tema che usi:

    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>

Voglio nascondere la barra del titolo per alcune delle mie attività. Il problema è che ho applicato uno stile a tutte le mie attività, quindi non posso semplicemente impostare il tema su @android:style/Theme.NoTitleBar .

L'utilizzo del tema NoTitleBar come genitore per il mio stile rimuoveva la barra del titolo da tutte le mie attività.

Posso impostare un elemento stile titolo da qualche parte?


Aggiungi questo stile al tuo file style.xml

 <style name="AppTheme.NoActionBar">
     <item name="windowActionBar">false</item>
     <item name="windowNoTitle">true</item>
 </style>

Dopo aver fatto riferimento a questo nome di stile nel tuo androidManifest.xml in attività perticulari in cui non vuoi vedere la barra del titolo, come di seguito.

<activity android:name=".youractivityname"
     android:theme="@style/AppTheme.NoActionBar">
</activity>

Ahem, puoi applicare temi alle singole attività in XML come nessun titolo. In altre parole, estrailo dal tag dell'applicazione, apri la dichiarazione tag e inseriscila nel tag attività desiderato.


Basta usare getActionBar().hide(); nel tuo metodo onCreate() .


Ecco come appare il codice completo. Nota l'importazione di android.view.Window.

package com.hoshan.tarik.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
    }
}

Fai questo nel tuo metodo onCreate() .

//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

//set content view AFTER ABOVE sequence (to avoid crash)
this.setContentView(R.layout.your_layout_name_here); 

this riferisce Activity .


Ho trovato due ragioni per cui questo errore potrebbe verificarsi.

Uno. I flag Window sono già impostati all'interno di super.onCreate(savedInstanceState); in tal caso potresti voler utilizzare il seguente ordine di comandi:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);      

super.onCreate(savedInstanceState);

Due. Hai il pulsante Indietro / Su all'interno della barra del titolo, il che significa che l'attività corrente è un figlio gerarchico di un'altra attività, nel qual caso potresti voler commentare o rimuovere questa linea di codice dal metodo onCreate .

getActionBar().setDisplayHomeAsUpEnabled(true);

Inserisci

<item name="android:windowNoTitle">true</item>

all'interno di AppTheme (styles.xml)


La prima risposta è anfibolo. ecco la mia spiegazione: aggiungi:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

nel metodo oncreate ().

prima:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);

(non solo prima di setContentView) se non lo fai, ti rimprovererà. +1 questa risposta.


Nel mio caso, se si utilizza Android Studio 2.1 e la versione di SDK compilata è 6.0, basta andare sul file manifest.xml e modificare il seguente codice:

Ecco il codice:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lesterxu.testapp2">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Ed ecco lo snip shoot (vedi il codice highlight):


Non mi piace il this.requestWindowFeature(Window.FEATURE_NO_TITLE); perché la barra del titolo appare brevemente, quindi scompare.

Non mi piace nemmeno l' android:theme="@android:style/Theme.NoTitleBar" perché ho perso tutte le modifiche di Holo 3.0+ a cui gli utenti dei nuovi dispositivi sono abituati. Quindi ho trovato questa soluzione.

Nella cartella res / values create un file chiamato styles.xml (se non esiste già). In quel file posiziona il seguente codice:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.NoTitleBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style>
</resources>

Quindi creare un res / values-v11 con un altro file styles.xml (ancora una volta potrebbe già esistere). In quel file posiziona il seguente codice:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"></style>
</resources>

E se hai scelto come target 4.0+, crea una cartella res / values-v14 con un altro file styles.xml (Sì, potrebbe già esserci). In quel file posiziona il seguente codice:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo.Light"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.Light.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"></style>
</resources>

Infine, con tutti questi file creati, apri il tuo file AndroidManifiest.xml puoi aggiungere il codice:

android:theme="@style/Theme.NoTitle"

al tag di attività dell'attività a cui non si desidera assegnare il titolo o il tag dell'applicazione se si desidera che si applichi all'intera applicazione.

Ora i tuoi utenti avranno i temi associati alla loro versione del dispositivo con il layout dello schermo che desideri.

PS Modifica del valore in android:theme="@style/Theme.FullScreen" avrà lo stesso effetto, ma rimuoverà anche la barra delle notifiche.


O se vuoi nascondere / mostrare la barra del titolo in qualsiasi momento:

private void toggleFullscreen(boolean fullscreen)
{
    WindowManager.LayoutParams attrs = getWindow().getAttributes();
    if (fullscreen)
    {
        attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    else
    {
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    getWindow().setAttributes(attrs);
}

Per AppCompat , la soluzione seguente ha funzionato per me:

Aggiungi un nuovo stile tema senza barra delle azioni in styles.xml e imposta parent="Theme.AppCompat.NoActionBar" .

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimary</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@color/colorPrimary</item>

</style>


Ora implementa lo stesso stile di tema per l'attività della schermata iniziale in androidManifest.xml

<activity
        android:name=".ActivityName"
        android:theme="@style/SplashTheme"> // apply splash them here 

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

Ecco il risultato:


Per nascondere entrambi i titoli e la barra delle azioni ho fatto questo:

In tag attività di Manifesto:

android:theme="@style/AppTheme.NoActionBar"

In Activity.java prima di setContentView:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

vale a dire,

// Rimuovi la barra del titolo

this.requestWindowFeature (Window.FEATURE_NO_TITLE);

// Rimuovi la barra di notifica

this.getWindow (). setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

NOTA : è necessario mantenere queste righe prima di setContentView


Puoi usare questo codice nel tuo file java

aggiungi questa linea prima di impostare o caricare la tua vista

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main);

Questo ha risolto il mio problema

In manifest la mia attività:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".SplashScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

In stile sotto il nome "AppTheme":

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme"
        parent="Theme.AppCompat.Light.NoActionBar">
        **<item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>**
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

Se si utilizza l'utente this.requestWindowFeature(Window.FEATURE_NO_TITLE) utente sarà comunque in grado di vedere la barra del titolo solo per un momento durante l'animazione di avvio quando l'attività inizia con onCreate . Se si utilizza @android:style/Theme.Black.NoTitleBar come mostrato di seguito, la barra del titolo non verrà visualizzata durante l'animazione di avvio.

<activity 
    android:name=".MainActivity" 
    android:label="My App"
    android:theme="@android:style/Theme.Black.NoTitleBar"
    android:screenOrientation="portrait">

l'esempio sopra ovviamente sostituirà il tema dell'applicazione esistente, se hai un tema esistente quindi aggiungi <item name="android:windowNoTitle">true</item> ad esso.


Sto usando un widget di supporto Toolbar v7. Quindi, per poter cancellare o nascondere il titolo, dobbiamo scrivere questo.

Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);

//Remove¡ing title bar
getSupportActionBar().setDisplayShowTitleEnabled(false);

cosa funziona per me:

1- in styles.xml:

 <style name="generalnotitle" parent="Theme.AppCompat.Light" >
          <item name="android:windowNoTitle">true</item>   <!-- //this -->     
   </style>

2- in MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {          
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide(); //<< this
    setContentView(R.layout.activity_main);
}
  1. in manifest eredita lo stile:

    <activity android:name=".MainActivity" android:theme="@style/generalnotitle">
    

la risposta corretta probabilmente non è estendere ActionbarActivity piuttosto estendere solo Activity

se usi ancora la actionbar sembra che funzioni:

@Override
protected void onCreate(Bundle savedInstanceState) {          
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide(); //<< this
    setContentView(R.layout.activity_main);
}

sembra che funzioni anche questo:

styles.xml:

   <style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
          <item name="android:windowNoTitle">true</item>   <!-- //this -->     
   </style>

Potrei fare come ha scritto Scott Biggs. questo tipo di opere. tranne che non esiste un tema allora. Voglio dire che lo sfondo del menu delle impostazioni è trasparente:

basta cambiare

public class MainActivity extends ActionBarActivity {

ad attività o FragmentActivity

public class MainActivity extends Activity  {

tuttavia potrei farlo sembrare abbastanza buono usando il material design e non rimuovere la barra di azione: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53

  1. imposta l'icona dell'applicazione
  2. imposta i colori della barra delle azioni per abbinare il design.
  3. imposta l'icona sul menu delle impostazioni
  4. aggiungi altre icone (pulsanti in alto)

è con l'esempio dello stile della barra delle azioni di compatibilità del design dei materiali.





titlebar