Round-Corner-Android-Layout im Dialogfeldfragment

8

Ich möchte ein Dialogfragment mit Ecken erstellen. Das Problem habe ich

Wie Sie sehen, befindet sich ein TextView im oberen Bereich, und einige Teile davon befinden sich über dem transparenten Teil des Dialogs, was schlecht ist. Dies geschieht auch mit dieser Bildlaufleiste aus der Listenansicht. Ich möchte diese Teile "schneiden" ... oder sie wie auf dem zweiten Foto maskieren. Ist das möglich?

Form

%Vor%

Ich verwende ein lineares Layout für das Fragment mit dem obigen Hintergrund. Ich rufe an

%Vor%

Um die Hintergrundfarbe & amp; Titelleiste.

    
Boldijar Paul 06.12.2014, 19:12
quelle

1 Antwort

3

Der einfache Weg (ohne Clipping)

Der einfachste Weg wäre, Ihrem Layout einfach einen Padding hinzuzufügen. Dann überlappt Ihr Text nicht mit den abgerundeten Ecken.

Wenn Sie abgerundete Ecken ohne Padding haben müssen, gibt es ein paar andere Optionen, die ich kenne:

Option 1: Clip-Ansichten (API 21 +)

Die Unterstützung für Clipping-Ansichten wurde der Klasse " View " in API 21 hinzugefügt Wenn Sie keine früheren API-Level benötigen, ist es sehr einfach, diese integrierte Clip-Funktion zu verwenden:

  • Legen Sie Ihre abgerundete Form als Layout-Hintergrund fest.
  • Entsprechend der Dokumentation setzen Sie dann das Attribut clip in Ihrem Layout-XML auf android:clipToOutline="true"

Leider gibt es einen Fehler und dieses Attribut scheint nicht zu funktionieren. Zum Glück können wir den Ausschnitt in Java einstellen:

  • In Ihrer Aktivität oder Ihrem Fragment tun Sie einfach: View.setClipToOutline(true)

Ich habe es getestet und es funktioniert:

Option 2: Neun-Patch-Rahmenmaske

Wenn Sie gerundetes Clipping auf Geräten & lt; API 21, können Sie diesen allgemeinen Ansatz verwenden:

  • Erstellen Sie mit FrameLayout oder RelativeLayout eine abgerundete Ecke neun -patch , um den Rest Ihres Inhalts zu "rahmen".
  • Dieses Neun-Flecken-Bild sollte transparent sein (Alpha 0%), mit Ausnahme der Ecken, die undurchsichtig sein sollten (Alpha 100%).
  • Legen Sie den Neun-Patch als Hintergrund einer Ansicht fest und platzieren Sie diese Ansicht als letztes untergeordnetes Element im Layout (dadurch wird es auf die anderen Ansichten gestapelt).
  • Text wird dann durch den transparenten Neun-Patch angezeigt, wird aber an den Ecken maskiert.

Wenn Sie diesen Ansatz verwenden, ändern Sie einfach die Ecken Ihrer Neun-Felder mit der Farbe Ihres Hintergrunds.

    
hungryghost 07.06.2015, 08:13
quelle