Ich versuche, ein Layout zu erstellen, in dem meine Stammansicht den gesamten Bildschirm einnimmt und unter den Status/Navigationsleisten gezeichnet wird. Alles funktioniert gut, bis ich ein großes Popup-Fenster habe (das im Bild hat 60 Elemente). Das Fenster erstreckt sich weit unter dem Fenster und kann nicht gescrollt werden. Wie kann ich mein Layout unter der Navigationsleiste erweitern, ohne zuzulassen, dass sich Popup-Fenster über den Bildschirm hinaus erstrecken?Bild unter Android Navigationsleiste zeichnen
Der Täter ist
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
Das Problem ist, dass ohne diese Flagge, ich kann nicht scheinen, meiner Meinung nach unter der Navigationsleiste zu ziehen. Stattdessen kann ich nur die android:windowBackground
(als grün) setzen.
Hier ist das Layout ich benutze:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorAccent"
android:fitsSystemWindows="false"
tools:context="com.example.fullscreendemo.MainActivity">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<android.support.v7.widget.AppCompatSpinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/spinner_values"
android:clipChildren="true"
app:layout_constraintTop_toBottomOf="@+id/text"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<View
android:layout_width="0dp"
android:layout_height="48dp"
android:background="@drawable/bg_nav_bar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
</android.support.constraint.ConstraintLayout>
Die Haupttätigkeit:
class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().getDecoreView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
setContentView(R.layout.activity_main);
}
}
Hallo welche Art von Stil verwenden Sie für die Aktivität? Sie können die transparente Leiste ohne diese Flagge erreichen, gibt es einen Grund, warum Sie nicht sind? –
Ich benutze 'Theme.AppCompat.Light.NoActionBar' Die Leiste ist auch ohne die Flagge transparent, das Problem ist, dass ich nur mit einer Farbe darunter zeichnen oder mit' android: windowBackground' zeichnen konnte. Sie können aus dem Bild sehen, dass die Farbe unter dem Balken grün ist, was der Fensterhintergrund und nicht der Hintergrund der Navigationsleiste ist. – TheHebrewHammer
Ich benutze dies als ein Stil von Android 19 und es hat die gleiche Wirkung, wenn Sie es versuchen wollen und gute Sache, die Sie es behoben –