Ich habe eine einfache Demo-Anwendung mit einem Begrüßungsbildschirm, einer Karte und einigen regulären Bildschirmen entwickelt.
Ich habe oben eine Aktionsleiste, die ein Logo enthält. Auf meinem Handy (Galaxy s1 I9000 V2.3) sieht alles gut aus, aber wenn ich es auf Galaxy s2 v4 teste, wird die Aktionsleiste auch im Begrüßungsbildschirm und auf dem Kartenbildschirm angezeigt.
Die Spalsh- und Map-Aktivität erbt nicht einmal von ActionBarActivity. Wie ist das möglich und wie kann ich dafür sorgen, dass es verschwindet?
Manifest:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:theme="@style/Theme.AppCompat.Light" >
<activity
android:name=".HomeActivity"
android:icon="@drawable/android_logo"
android:label=""
android:logo="@drawable/android_logo" >
<!--
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
-->
</activity>
<activity
android:name=".MapActivity"
android:label="" >
</activity>
<activity
android:name=".PackageActivity"
android:icon="@drawable/android_logo"
android:label=""
android:logo="@drawable/android_logo" >
</activity>
<activity
android:name=".SplashActivity"
android:label="" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
MapActivity-Definition (es ist eine lange, also habe ich nur die Definition eingefügt):
public class MapActivity extends FragmentActivity implements LocationListener
Splash-Aktivität:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
public class SplashActivity extends Activity{
private static final long SPLASH_DISPLAY_LENGTH = 2000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
Intent mainIntent = new Intent(SplashActivity.this,HomeActivity.class);
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
}
java
android
android-actionbar
Tomer
quelle
quelle
getActionBar
da die Aktivität nicht vonActionBarActivity
<item name="android:windowActionBar">false</item>
würde es das nicht auf allen Bildschirmen verbergen?Wenn Sie sich fragen, wie Sie sich in einer bestimmten Aktivität verstecken sollen , benötigen Sie Folgendes:
quelle
1.Gehen Sie zu Ihrem
manifest.xml
Datei.2.
Find
die,activity tag
für die Sie Ihre ActionBar ausblenden möchten und dannadd
,quelle
Wenn Sie Vollbild ohne actionBar und Titel erhalten möchten.
Fügen Sie es in style.xml hinzu
und verwenden Sie den Stil bei Aktivität von manifest.xml.
quelle
Das
ActionBar
existiert normalerweise mit,Fragments
damitActivity
du es verstecken kannstund von dem
Fragment
kannst du es machenquelle
getSupportActionBar().hide();
in ActionBarActivityWenn Sie Theme.AppCompat.Light verwenden, ist Theme.AppCompat.Light.NoActionBar ein besseres Äquivalent.
Ich habe festgestellt, dass die Verwendung von Theme.AppCompat.NoTitleBar dazu führte, dass mein Schaltflächentext unsichtbar war, sodass ich Theme.AppCompat.Light.NoActionBar verwende.
quelle
Das funktioniert bei mir! Setzen Sie dies in Ihre Aktivität in Manifesten ein
Sie können Ihr benutzerdefiniertes Thema auch in styles.xml wie folgt erstellen:
Ich hoffe das hilft.
quelle
Sie können den Low Profile-Modus verwenden. Siehe hier
Suchen Sie einfach danach und
SYSTEM_UI_FLAG_LOW_PROFILE
dimmen Sie auch die Navigationsschaltflächen, wenn sie auf dem Bildschirm vorhanden sind.quelle
Die obigen Antworten würden bei der ActionBar-Sache helfen. Verwenden Sie zum Hinzufügen den folgenden Code, wenn Sie den Begrüßungsbildschirm verwenden: Verwenden Sie diesen Code, bevor Sie die Inhaltsansicht festlegen:
Um dies zu verdeutlichen, gehen Sie wie folgt vor:
Dies würde Ihren Bildschirm zu einem Vollbild machen, dh entfernen Sie die obere Leiste, in der Sie die Netzwerkleiste sehen, usw.
quelle
Wenden Sie in Ihrem Design Folgendes für die Aktivität in AndroidManifest.xml an:
Wenden Sie dann in style.xml Folgendes in Ihrem Stil an
quelle
// Verstecke die ActionBar oben
// Diesen Code in die Java-Datei einfügen
quelle
Dies funktioniert in API 27
Ersetzen Sie in der Datei styles.xml den folgenden Code ....
Geben Sie dann in die Dateien (z. B. activity_list.xml), in die Sie eine Symbolleiste einfügen möchten, den folgenden Code ein.
Wenn Sie Probleme haben, wechseln Sie zum linearen Layout (da dieser Code darauf getestet wird).
quelle
Von hier aus :
Eine Möglichkeit besteht darin, ActionBar vollständig zu deaktivieren (in der Datei app manifest.xml) und dann auf jeder Seite, die eine ActionBar benötigt, eine Symbolleiste hinzuzufügen.
(Folgen Sie dem obigen Link für eine schrittweise Erklärung)
quelle
Ersetzen Sie AndroidManifest.xml
zu
quelle
Fügen Sie einen neuen Stil in Ihre style.xml ein
und fügen Sie dann die folgende Zeile in Ihr Manifest ein
quelle
Überprüfen Sie, ob das Problem nach dem Ändern des Themas weiterhin vorhanden ist.
Auffüllproblem beim Erstellen eines Leerraums über dem Fragmentfenster / App-Fenster
Sobald Sie die Polsterung entfernen - der obere Wert wird automatisch der Leerraum entfernt.
quelle