View und ViewGroup

Android-Entwicklung: Benutzeroberfläche Logo
Was versteht man unter View und ViewGroup?

„View und ViewGroup“ sind zwei sehr zentrale Klassen für die Gestaltung der Benutzeroberfläche in Android. Jede Android-App enthält eine oder mehrere Activities, wobei jede einzelne Activity für genau eine Bildschirmseite steht. Innerhalb einer solchen Bildschirmseite können nun verschiedene GUI-Komponenten (z. B. Buttons) existieren, welche Instanzen der View- oder ViewGroup-Klasse sind.

 

Was ist ein View?

View“ ist eine Oberklasse für alle GUI-Komponenten in Android. Beispielsweise ist die ProgressBar-Klasse, die zur Anzeige von Fortschrittsbalken in Android-Apps verwendet wird, eine Unterklasse von View. Android enthält beispielsweise folgende View-Unterklassen:

Button (a), Checkbox (b), Switch (c), TextView (d), ProgressBar (e)

Android-Views

 

Was ist eine ViewGroup?

Die ViewGroup ist eine Unterklasse von View und bietet verschiedene Container, die Views oder ViewGroups beinhalten können. ViewGroups dienen zur Gruppierung dieser Views und zur Definition verschiedener Layout-Eigenschaften. ViewGroup ist die Basisklasse für alle Layouts und Container, welche somit von ViewGroup erben. Android enthält aktuell (Stand: Dezember 2017) die folgenden ViewGroup-Unterklassen:

  • ConstraintLayout
  • GridLayout
  • FrameLayout
  • LinearLayout (horizontal) und (vertical)
  • RelativeLayout
  • TableLayout
  • TableRow
  • Fragment

Android: Layouts

Der Screenshot oben zeigt alle verfügbaren Layouts in der Palette von Android-Studio. Die kleinen Icons links vom Layout-Namen zeigen bereits die Anordnung der View-Elemente innerhalb des jeweiligen Layouts an. So werden z. B. Views im „LinearLayout (horizontal)“ auf einer horizontalen Linie nebeneinander angeordnet, wie auf folgendem Screenshot zu sehen ist:

Android: Linear Layout (horizontal)

 

Wo werden Views und ViewGroups definiert?

Views und ViewGroups werden in einer XML-Datei (2.) definiert und im Projektordner „res/layout“ (1.) abgelegt. Es gibt allerdings nicht nur eine XML-Datei für alle Bildschirmseiten einer App, sondern für jede Bildschirmseite eine eigene XML-Datei.

 

Info: Es besteht zwar auch die Möglichkeit die Eigenschaften für jedes Layout in (Java-)Code zu definieren, aber dadurch würde man nur Code und Layout-Beschreibung vermischen. Die Definition in einer XML-Datei sollte deswegen immer priorisiert werden, da auf diese Weise dein Code von der Layout-Beschreibung sauber getrennt ist. 

 

In (4.) siehst du die Vorschau für das App-Layout mit allen Views und auf der linken Seite bei (3.) die zugehörige XML-Datei „activity_main.xml„. Innerhalb dieser Datei siehst du in der zweiten Zeile oben die ViewGroup „RelativeLayout“ und darunter die View-Elemente, wie z. B. „Button„, „CheckBox“ und „Switch„. Sowohl für die ViewGroup, als auch für die View-Elemente werden in dieser XML-Datei über verschiedene Attribute die Eigenschaften festgelegt. So definiert etwa das Attribut „android:text=“Button““ den angezeigten Text des Buttons.

ACHTUNG: Es ist darauf zu achten, dass alle Android-Attribute immer mit dem Präfix „android“ eingeleitet werden. Dieses Präfix legt den Namensraum „android“ fest und verhindert das Kollidieren von zwei gleichnamigen Attributen aus verschiedenen Namensräumen.

Android: Layoutdefinition