2017-06-06 1 views
0

Ich habe ein Problem mit dem Hintergrund einer Ansicht in this project.Probleme mit Hintergründen und Ebenen (Android Studio)

Es gibt eine Ansicht mit einer transparenten Ebene, die nicht immer angezeigt wird ... Es sieht so aus, als ob die Höhe dieser Ansicht in einigen Fällen automatisch auf 0 gesetzt wurde, wie ich in der Vorschau der Aktivität, die die Ansicht enthält. Der Code dieses Elementes ist wie folgt:

<View 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_margin="16dp" 
     android:alpha="0.5" 
     android:background="@drawable/background_layers" /> 

Die Hauptansicht Gruppe in dieser Aktivität eine Scroll ist. Wenn das gesamte Layout angezeigt und ist auf dem Bildschirm sichtbar (Sie müssen also nicht nach unten scrollen) funktioniert alles einwandfrei (Blick auf die transparente Schicht, die das Thema dieser Frage ist):

Vertical orientation: background transparent layer displays correctly

Aber wenn die Bildschirmdichte niedrig ist, oder wenn das Gerät im Hochformat ist, und ich muss den Bildlauf verwenden, da das vollständige Layout nicht gleichzeitig angezeigt wird ... die vorherige Ansicht wird nicht angezeigt, die transparente Schicht ist nicht sichtbar :(

Horizontal orientation: background transparent layer is not displayed

Es passiert, wenn die App läuft und auch in Android Studio, in der Vorschau, wie ich schon sagte. Hier ist ein Beispiel mit vertikaler Ausrichtung und geringer Rasterdichte, wie auf der Registerkarte Vorschau der Aktivität im Android Studio gesehen:

Preview screen in Android Studio

Jede Idee, dieses isue zu beheben?

Vielen Dank im Voraus.

David.

+0

können Sie den Code für das gesamte Layout eingeben? –

+0

Ich denke, es ist lange Zeit für das Posten hier, @JuanMartinez. Ich habe einen Gist für diese Aktivität erstellt: https://gist.github.com/dburgosp/69ad5359af0f39590d2261361d72b429 –

Antwort

1

Ich glaube, ich habe das Problem mit Ihrem Layout gefunden. Die Ansicht transparent_background nimmt manchmal die Höhe 0 an, da ihre Höhe ist und die übergeordnete Ansicht (main_relative_layout) die Höhe wrap_content hat. Sie sollten die transparent_background Dimensionen relativ zu einer anderen Ansicht festlegen, die LinearLayout, die den Inhalt möglicherweise umschließt, indem android:layout_alignTop, android:layout_alignBottom, android:layout_alignLeft und android:layout_alignRight Attribute verwendet. Möglicherweise müssen Sie den Rand LinearLayout entfernen und stattdessen Padding verwenden, um die transparent_background Ansicht korrekt auszurichten, lassen Sie mich wissen, wenn Sie Hilfe benötigen.

+0

Vielen Dank, @JuanMartinez. Ich habe versucht, aber ohne Erfolg :(Ich vergaß zu sagen, dass das Problem erschien, wenn ich die ScrollView, also denke ich, der beste Weg, um dieses Problem zu beheben ist das Entfernen der ScrollView und Anpassung des Layouts für beide Orientierungen und für jeden Bildschirm dichte, ohne scroll. Danke nochmal! –

+1

Ja, es macht Sinn, dass die Probleme mit der ScrollView erscheint, denn wenn Sie es hinzugefügt haben Sie die relativeLayout Höhe main_relative_layout auf wrap_content gesetzt.Wenn Sie die ScrollView entfernen und die RelativeLayout setzen height to match_parent das Problem wird weg sein. –