Ich habe eine Aktivität mit einer Symbolleiste und einem framelayout, wo ich Fragmente injiziere. Negativer Rand Layout zum Überlagern des übergeordneten Layouts
Dies ist das Layout für diese Aktivität:
<android.support.v4.widget.DrawerLayout
android:id="@+id/drwDrawerRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_main_selector"
android:theme="@style/AppTheme">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/viewMainToolbar"
layout="@layout/view_toolbar" />
</LinearLayout>
<FrameLayout
android:id="@+id/frmDrawerContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/toolbar_height"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="vertical" />
<include
android:id="@+id/viewDrawer"
layout="@layout/view_drawer"
bind:name="@{name}"/>
<include
android:id="@+id/viewUserDrawer"
layout="@layout/view_user_drawer"
bind:name="@{name}"/>
</android.support.v4.widget.DrawerLayout>
ich die framelayout mit einem Spielraum haben, so dass der Inhalt aus den Fragmenten nicht die Symbolleiste überlagern, aber ich gesetzt clipChildren und clipToPadding auf false wie pro einige andere Posts, die ich hier gesehen habe.
Auf einigen Fragmenten habe ich jedoch eine Ladeansicht, die ich auf dem ganzen Bildschirm belegen möchte.
Dies ist ein Beispiel-Fragment:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/layout_main"
style="@style/Layout.FullScreen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/layout_footer"
android:orientation="vertical">
<TextView
android:id="@+id/textView7"
style="@style/Text.Header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/login_header" />
<EditText
android:id="@+id/edtMessage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:elevation="1dp"
android:ems="10"
android:inputType="textMultiLine" />
<Button
android:id="@+id/btnSend"
style="@style/Button.Primary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/support_button" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_footer"
style="@style/Layout.FullScreen.Footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical">
<TextView
android:id="@+id/footerInfo"
style="@style/Text.White.Small.Centered"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/footer_info" />
</LinearLayout>
<include
layout="@layout/view_loading"
android:visibility="invisible"
bind:loading="@{loading}" />
</RelativeLayout>
Ans dies ist der eingeschlossene Lade Ansicht, die ich mit negativen Rand gesetzt haben, in der Hoffnung es dem oberen Teil des Bildschirms bewegen würde:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="-40dp"
android:background="@color/colorLoadingBackground"
android:clickable="true"
android:visibility="@{loading ? View.VISIBLE : View.GONE}">
</FrameLayout>
Fehle ich hier etwas?
Ist das machbar oder muss ich ändern, wie ich das mache?
Erläuterung: Das erste/root-Layout enthält eine Symbolleiste und das zweite Layout ist im Rahmenlayout des ersten enthalten. Dies bedeutet, dass der Inhalt des zweiten Layouts unterhalb der Symbolleiste beginnt. Ich möchte jedoch, dass das dritte Layout (ein Ladebildschirm, der in dem zweiten Layout enthalten ist) einen negativen Rand hat, so dass es den gesamten Bildschirm überlagert und nicht nur unterhalb der Symbolleiste beginnt.
Es wäre toll, wenn Sie genau erklären, wie das funktioniert, ich bin nicht sicher, was dies zu erreichen, oder wenn dies würde auch mit getrennten arbeiten und enthalten Layouts. – BlunT
Ersetzen Sie einfach Ihre Fragmente in Framelayout, die für Fragment-Container verwendet wird auch Ihre Frage nicht genug, um zu klären, was Sie brauchen? –
Ich ersetzte die framelayouts und das Verhalten ist immer noch das gleiche. Wenn meine Frage nicht klar ist, werde ich versuchen zu klären. Das erste/root-Layout enthält eine Symbolleiste und das zweite Layout ist im Rahmenlayout des ersten enthalten. Dies bedeutet, dass der Inhalt des zweiten Layouts unterhalb der Symbolleiste beginnt. Ich möchte jedoch, dass das dritte Layout (ein Ladebildschirm, der in dem zweiten Layout enthalten ist) einen negativen Rand hat, so dass es den gesamten Bildschirm überlagert und nicht nur unterhalb der Symbolleiste beginnt. – BlunT