Android Floating-Ansicht (auch andere Ansichten)
-
20-09-2019 - |
Frage
Ich habe mit diesem für ein paar Tage jetzt rumgespielt, hoffentlich jemand hier kann mir lend a hand.
Ich habe ein einfaches zweispaltige Layout, die linke Seite ist eine Navigationsleiste mit den Tasten, die rechte Seite ist ein Content-Panel. Wenn der Benutzer eine der Tasten tippt (sagt sie, der dritter nach unten), würde Ich mag einen schwebenden Blick auf den rechts neben der Schaltfläche ausgerichtet haben, aber auf dem Inhaltsbereich schweben. Hier ist ein Bild zu zeigen, was ich meine:
Alles, was ich habe versucht, schiebt das Floating-Menü in der Navigationsleiste oder im Content-Panel, das nicht das, was ich will. Irgendwelche Ideen? Hier ist im Grunde, was ich habe, so weit:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_alignParentLeft="true"
android:id="@+id/navigation_bar"
>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.14"
>
<ImageButton
android:id="@+id/button1_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/icon"
android:layout_gravity="center"
/>
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.14"
>
<ImageButton
android:id="@+id/button2_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/icon"
android:layout_gravity="center"
/>
</FrameLayout>
</LinearLayout>
<FrameLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.14"
android:layout_toRightOf="@id/navigation_bar"
>
</FrameLayout>
</RelativeLayout>
Lösung
Ein FrameLayout ermöglicht es Ihnen, einen Blick zu haben, eine andere Ansicht überlappt. Ich bin sicher, dass es nicht sinnvoll ist, sie mit nur einem Kind Blick zu haben, wie Sie in Ihrem Beispiel haben. Versuchen Sie, eine FrameLayout auf höchstem Niveau hat, mit „statischen“ Blick als erstes Kind-Element, und das Floating-Menü als zweites Kind.
Die Entwickler Dokumente einen guten Überblick haben die Layout-Typen, es könnte Ihnen den Einstieg erleichtern.
Andere Tipps
RelativeLayout
ist das, was Sie wollen.
FrameLayout
muss nur ein Kind, und deshalb wird, in der Regel nur für einen Platzhalter verwendet, wo andere Layouts später kommen (wie der Hauptrahmen der Aktivität).
AbsoluteLayout
ist veraltet und sollte nicht verwendet werden.
RelativeLayout
erlaubt es, die Ansichten zu Überschneidungen, und erlaubt es tun, so ziemlich, was Sie wollen.