2012-06-26 26 views
5

La mia domanda è esattamente il sabe come Custom titlebar - system titlebar being shown for a brief moment?Barra del titolo continua ad apparire, anche con requestWindowFeature o Android: tema

ma non ho potuto ottenere gli stessi risultati come @Jerry ha scritto sul migliore risposta. "Quando sono passato ad usare un tema a dire il quadro non volevo un titolo, il problema è andato via e ora vedo il mio titolo direttamente sul primo carico"

Il mio codice:

Manifesto:

<?xml version="1.0" encoding="UTF-8"?> 
<manifest android:versionCode="3" android:versionName="1.0.2" 
package="androidhive.dashboard"  xmlns:android="http://schemas.android.com/apk/res/android"> 
<uses-sdk android:minSdkVersion="8"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<application android:icon="@drawable/icone" android:label="@string/app_name"> 
    <activity 
     android:name="com.androidhive.dashboard.SplashScreen" 
     android:theme="@android:style/Theme.NoTitleBar" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="stateHidden|adjustResize"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

disposizione:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
style="@style/SplashTheme" 
> 

<ImageView 
android:id="@+id/splashscreen_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_gravity="fill_vertical" 
android:contentDescription="Splash" 
android:scaleType="centerCrop" 
android:src="@drawable/splash" 
style="@style/SplashTheme" /> 

</LinearLayout> 

Stile:

<style name="SplashTheme" parent="@android:Theme.Black"> 
<item name="android:windowNoTitle">true</item> 
<item name="android:background">@drawable/splash</item> 
</style> 

SplashScreen.java

public class SplashScreen extends Activity implements Runnable{ 


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

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setTheme(R.style.SplashTheme); 
    setContentView(R.layout.splashscreen_layout); 




    Handler h = new Handler(); 
    h.postDelayed(this, 15000); 
} 

@Override 
public void run() { 
    startActivity(new Intent(this, AndroidDashboardDesignActivity.class)); 
    finish(); 
} 
} 

Grazie per l'aiuto!

risposta

6

Put:

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

Sotto la scheda dell'applicazione, non la vostra attività una

+1

piacevole e semplice! –

+0

È così semplice che solo l'autore può capire se stesso! – Sayonara

9

utilizzare il proprio tema nella vostra attività sul AndroidManifest non nel vostro layout !!

questo funzionerà: SplashScreen.java

public class SplashScreen extends Activity{ 


    private Handler handler; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_launcher); 

     final Runnable runnable = new Runnable() { 

      @Override 
      public void run() { 
        Intent intent=new Intent(SplashScreen.this, AndroidDashboardDesignActivity.class); 
        startActivity(intent); 
        finish(); 

      } 
     }; 
     handler = new Handler(); 
     handler.postDelayed(runnable, 5000); 


    } 

theme.xml

<style name="SplashTheme" parent="android:Theme"> 
    <item name="android:windowBackground">@null</item> 
    <item name="android:windowNoTitle">true</item> 
</style> 

<style name="SplashTheme.FullScreen" parent="android:Theme"> 
    <item name="android:windowBackground">@null</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullscreen">true</item> 
</style> 

il primo tema mostrerà la barra di stato per voi se voglio nascondere questo anche usare il secondo theme.Anche ho usato l'attributo windowBackround su null perché userete la vostra immagine come backround per il vostro RootLayout dopo, quindi è meglio non sovrascrivere il colore di sfondo usato dal tema Android predefinito per il problema di prestazioni.

nel vostro splashscreen_layout è possibile utilizzare questo

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/splash" 
    android:orientation="vertical" > 

</RelativeLayout> 

Nel vostro utilizzo manifesta questa

<uses-sdk android:minSdkVersion="8" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<application 
    android:icon="@drawable/icone" 
    android:label="@string/app_name" > 
    <activity 
     android:name="com.androidhive.dashboard.SplashScreen" 
     android:label="@string/app_name" 
     android:theme="@style/SplashTheme" 
     android:windowSoftInputMode="stateHidden|adjustResize" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

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

se si desidera utilizzare il secondo cambiamento tema nel manifestare

android:theme="@style/SplashTheme" con android:theme="@style/SplashTheme.FullScreen"

Un modo semplice rimuovere o si modifica lo stile nel layout e aggiungere android:theme="@android:style/Theme.NoTitleBar" nel manifesto sotto tag attività

+0

Grazie! Finché non volevo un titolo personalizzato, la risposta di @ Cruceo funzionava bene. Ma il tuo è molto completo e ben spiegato e può aiutare chi desidera titoli personalizzati. –

0

Nel vostro utilizzo MainActivity questo

getSupportActionBar().hide(); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
0

Con AppCompat questo sembra funziona in modo diverso.

seguente soluzione ha funzionato per me:

Aggiungi nuovo stile tema con nessuna barra di azione nella vostra styles.xml e impostare 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 implementare lo stesso stile tema per la vostra attività splash screen 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 risultato:

enter image description here

Problemi correlati