2012-03-29 8 views
3

Ich möchte Popup-Dialog wie in Facebook-App mit Zeige-Marker zum Auswahlbereich machen. hier ist ein Beispiel, wie es aussehen sollte. http://imageshack.us/photo/my-images/9/facebookandroid.png/Erstellen von Popup-Dialog wie Facebook Android App

bitte helfen, wenn Sie etwas darüber wissen.

Vielen Dank im Voraus ..

enter image description here

+0

dinesh gelöst erhalten werden kann, würde, ich glaube, Sie ein Dialog-Schnell für diese erstellen können. –

+2

sehen Sie dies [QuickAction Dialog in Android] (https://github.com/lorensiuswlt/NewQuickAction) –

Antwort

1

Es gibt mehrere Strategien, die dieses Problem lösen können, aber jede Lösung hat mit der Platzierung des Dreiecks/Zeiger am oberen Rand des Dialog, da es zu tun muss positioniert werden, um die Auswahl des Benutzers anzuzeigen.

Ich denke, der einfachste Weg, dieses Problem zu lösen ist:

  1. eine Aktion starten, die ein transparentes Thema. Wenden Sie also etwas wie Android: theme = "@ android: style/Theme.Translucent.NoTitleBar" auf die Aktivität im Manifest an. Wenn Sie eine Titelleiste möchten, suchen Sie nach dem richtigen Android-Stil.
  2. Übergeben Sie ein Extra an die Aktivität, die das Navigationselement darstellt, das vom Benutzer ausgewählt wurde. Dies wird von der Aktivität verwendet, um den Dreieckszeiger zu positionieren.
  3. Behandeln Sie dieses Extra in der onCreate() - Methode der Aktivität, indem Sie das Dreieck/den Zeiger im Code zeichnen. Das bedeutet, dass Sie setContentView (...) in onCreate() aufrufen und dann einen Verweis auf die ViewGroup abrufen möchten (z. B. RelativeLayout, AbsoluteLayout usw.). Wenn Sie das einmal haben, können Sie ViewGroup # addView (View child, int index) aufrufen, um das ImageView hinzuzufügen, das das Dreieck darstellt. Wahrscheinlich möchten Sie index = 0 verwenden.
  4. Stellen Sie sicher, dass die Ansicht (en), die Sie programmatisch hinzufügen, durch Elemente im XML nicht abgedeckt (d. H. Ausgeblendet) werden.
  5. Das Hinzufügen des Dreiecks ist relativ einfach, aber die Positionierung kann schwierig werden. Der von dir gepostete Screenshot geht von einem Gerät mit fester Breite aus, und das trifft nur auf eine Android-App auf dem Markt nicht zu, die auf 1000-facher Bildschirmgröße arbeiten muss. Die Y-Koordinate des Dreiecks/Zeigers ist kein Problem, da die Höhe des Top-Navs wahrscheinlich hart kodiert ist. Es ist die X-Koordinate, die schwierig werden kann. Was ist, wenn sich die Top-Nav-Elemente dehnen? Nehmen wir an, wir haben einen robusten/ordentlichen Weg, um die X-Position zu erhalten, wo die Mitte des Dreiecks/Zeigers sein sollte. In Anbetracht dessen würde ich versuchen, ein vertikales LinearLayout in meiner Aktivität zu verwenden und ein ImageView mit einem linken Rand für das Dreieck/den Zeiger zu verwenden. Das ist nur eine Vermutung, und Sie werden wahrscheinlich daran herumspielen müssen, um die richtigen View-Elemente und die richtige Positionierungsstrategie für Ihre spezifische Implementierung zu erhalten.
+0

Eine solche robuste/decent-Methode könnte sein, einen Touch-Event-Handler auf dem Top-Nav hinzufügen und verfolgen Sie die X-Koordinate der Berührung/Klick. – Tenacious

+1

Anstatt eine Aktivität zu erstellen, kann ich auch einen Dialog erstellen, aber ich muss ihn schließen, wenn der Benutzer einen anderen als den Popup-Bereich berührt –

Verwandte Themen