Widgets für native mobile Apps ändern | Mendix

Direkt zum Inhalt

Ändern von Widgets für native mobile Apps

Widgets ändern Artikelbild

Bitte beachten Sie, dass dieses Tutorial auf einer nativen App basiert, die erstellt wurde in Mendix Modeller-Version 9.24.0. In anderen Versionen können die Dinge anders sein.

Voraussetzungen:

Um den Inhalt dieses Tutorials zu verstehen, benötigen Sie Grundkenntnisse in React Native und in der Implementierung des Stylings einer nativen mobilen App in Mendix Studio Pro. Wenn Sie neu im Design einer nativen mobilen App sind, lesen Sie bitte das entsprechende Lernmaterial aus dem Mendix Academy zuerst.

Worum es in diesem Beitrag geht

In diesem Beitrag werden wir durchgehen, wie man ändert Mendix Standard-Widgets, um eine intuitive Benutzeroberfläche für Ihre native mobile App zu erstellen. Dies sind Anfragen, die ich als UX-Berater im Expert Services-Team häufig erhalte.

Worum es in diesem Beitrag geht NICHT Über

Bitte beachten Sie, dass dieser Beitrag KEIN Tutorial zum Erstellen eines benutzerdefinierten nativen Widgets für mobile Apps ist. Je nach Komplexität des Widgets kann dies erheblich länger dauern (und ein höheres Budget erfordern), was für manche Kunden möglicherweise keine Option ist.

Das Ziel dieses Beitrags besteht darin, zu zeigen, dass wir mit React Native allein ein einigermaßen zufriedenstellendes Ergebnis erzielen können.

Alle in diesem Blogbeitrag gezeigten Benutzeroberflächen sind meine eigene Kreation.

UNTERRICHT

Nachfolgend sind die drei Stile aufgeführt, auf die wir uns konzentrieren werden:

Lektion 1: Erweiterung des Top Bar-Abschnitts

Lektion 2: Suchleiste mit Lupe

Lektion 3: Overlay-Elemente

Lektion 1: Erweiterung des Top Bar-Abschnitts

Eine der häufigsten Anfragen, die ich für native Projekte erhalte, ist die Erweiterung des oberen Leistenbereichs. Dadurch kann der Benutzer eine Anweisung einfügen, worum es auf der Seite geht. Unten sehen Sie ein Beispiel für das Ergebnis:

 

Schritt 1: Themenstruktur im Modeller einrichten

Themenmodul: Bevor wir mit dem Styling der App beginnen, stellen Sie sicher, dass Sie ein Designmodul für diese App erstellt haben. Wenn Sie nicht sicher sind, wie das geht, lesen Sie bitte die Kurse im Mendix Akademie.

Lektion 1 Schritt 1 Grafik

Erstellen Sie eine neue Seite: In diesem Fall habe ich es in „Hintergrund“ umbenannt.

Designmodul-Grafik

 

Schritt 2: Den Elementen Klassen hinzufügen

Erstellen Sie auf der Seite „Hintergrund“ einen Container um die Anweisungen der Seite und weisen Sie ihm eine Klasse zu.

Hinzufügen von Klassen zur Elementgrafik
Ich habe den Klassennamen „topBarExtension“ verwendet, da es sich um eine Erweiterung der oberen Leiste handelt.

Auf derselben Seite habe ich Inhalt hinzugefügt, um zu zeigen, wie die obere Leiste aussieht, wenn zusätzliche Elemente vorhanden sind.

Fügen Sie der Elementgrafik Nr. 2 eine Klasse hinzu
Ich habe der Karte die Klasse „PopCard“ gegeben.

Erstellen Sie in Ihrem Designmodul eine neue JS-Datei unter „native“ und benennen Sie sie entsprechend um, z. B. „extension.js“. Dies entspricht der bewährten Vorgehensweise, die Ordnerstruktur organisiert und die Dateien erkennbar zu halten.

Extension.js-Grafik

Schritt 3: Styling der Elemente implementieren

Der Schlüssel zum Erstellen einer Top-Bar-Erweiterung besteht darin, sie ohne Lücke an die Statusleiste anzuhängen. Setzen Sie in der Klasse „topBarExtension“ „marginTop“ auf 0.

// - top bar extension section background
export const topBarExtension = {
  container: {
    marginTop: 0,
    paddingTop: 12,
    paddingBottom: 25,
    width: "100%",
    backgroundColor: "#586F63"
  }
}

Sie können auch andere Elemente gerne an den Stil Ihrer Wahl anpassen.

Erstellen Sie eine neue Datei „card.js“. Diese wird verwendet, um der Karte einen Stil zu verleihen, der jedes nachfolgende Element umschließt.

Karte, js Grafik

Fügen Sie in der Datei „card.js“ die Klasse „popCard“ hinzu:

// - the card that wraps around each subsequent element
export const popCard = {
container: {
borderRadius: 10,
marginLeft: 15,
marginRight: 15,
marginTop: 5,
marginBottom: 5,
borderWidth: 1,
paddingLeft: 20,
paddingRight: 20,
paddingTop: 10,
paddingBottom: 15,
borderColor: "#DDDDDD",
backgroundColor: "#FFFFFF"
}
}

Stellen Sie sicher, dass Sie die neu erstellten Dateien in Ihre Datei „main.js“ importieren:

Main.js-Grafik

Endresultat

Bonus

Ein weiterer gängiger Stil besteht darin, den Hauptinhalt teilweise über die Erweiterung der oberen Leiste zu legen. Hier ist eine Vorschau des Endergebnisses:

Um dies zu erreichen, müssen wir die Polsterung der Top-Bar-Erweiterung erweitern, sodass das nachfolgende Element den Inhalt im Top-Bar-Bereich nicht abdeckt.

Schritt 1: Aktualisieren Sie den Modeller

Modeller-Grafik aktualisieren
Die aktualisierte Klasse für die Top-Bar-Erweiterung.
Aktualisierte Klasse für die Kartengrafik
Die aktualisierte Klasse für die Karte.

Schritt 2: Aktualisieren Sie den Code

Unten sehen Sie den aktualisierten Code für die Top-Bar-Erweiterung. Ich habe ihm eine andere Klasse „topBarExtensionLong“ zugewiesen und ihn derselben Datei „extension.js“ hinzugefügt.

// - top bar extension for the overlapping card style
export const topBarExtensionLong = {
container: {
marginTop: 0,
paddingTop: 12,
paddingBottom: 65,
width: "100%",
backgroundColor: "#586F63"
}
}

Um den Überlappungseffekt zu erzeugen, müssen wir den oberen Rand in eine negative Einheit ändern, sodass er über den oberen Rand hinausgeht. Unten sehen Sie den Code für diesen Stil. Ich habe ihm eine separate Klasse „cardOverlap“ zugewiesen, um ihn von der vorherigen zu unterscheiden. Ich habe ihn auch derselben Datei „card.js“ hinzugefügt.

// - card for the overlap style
export const cardOverlap = {
container: {
borderRadius: 10,
marginLeft: 15,
marginRight: 15,
marginTop: -35,
marginBottom: 5,
borderWidth: 1,
paddingLeft: 20,
paddingRight: 20,
paddingTop: 10,
paddingBottom: 15,
borderColor: "#DDDDDD",
backgroundColor: "#FFFFFF"
}
}

Endresultat

Lektion 2: Suchleiste mit Lupe

Eine weitere häufige Kundenanfrage ist das Hinzufügen eines Lupensymbols zur Suchleiste. Dies kann dem Benutzer helfen, das Suchfeld sofort zu identifizieren.

Schritt 1: Daten einrichten und Nanoflow erstellen

Beachten Sie, dass Sie im Domänenmodellierer eine Entität wie folgt einrichten müssen, bevor Sie die Formatierung des Elements implementieren.

Datengrafik einrichten
• Name: Suchhelfer
• Attribut: Suchtext (ein begrenztes Zeichenfolgenattribut)
• Persistent: Nein

In Mendix, die Suchleiste ist im Grunde ein Textfeld mit Suchfunktion. Standardmäßig ist es nicht möglich, dem Textfeld ein Symbol hinzuzufügen. Daher müssen wir ein Layoutraster erstellen und das Symbol in einer Spalte und das Textfeld in einer anderen platzieren.

Ziehen Sie im Modellierer ein Datenansicht und rufen Sie die Datenquelle ab, indem Sie einen Nanoflow aufrufen. Erstellen Sie einen neuen Nanoflow „DS_SearchHelper“.

Datenansichtsgrafik

 

Neue Objektgrafik erstellen
Fügen Sie dem Flow die Aktivität „Neues Objekt erstellen“ hinzu.

 

Endpunktgrafik
Der Endpunkt.

Erstellen Sie in der Datenansicht einen Container und weisen Sie ihm die Klasse „searchBar“ zu. Dadurch wird der Rahmen der Suchleiste simuliert.

Suchleisten-Rahmengrafik

Erstellen Sie innerhalb des Containers ein zweispaltiges Layoutraster (im Verhältnis 2:10). Fügen Sie links ein Lupenbild hinzu. (Sie müssen es zuerst in eine Bildsammlung hochladen).

Lupengrafik hinzufügen

Fügen Sie rechts ein Textfeld mit dem Attribut „SearchText“ und der Klasse „SearchInput“ hinzu. Dies ist das eigentliche Textfeld. Wir werden es so gestalten, dass es sich in diese Suchleiste einfügt.

Grafik im Textfeldstil

Sie können auch einen optionalen Platzhaltertext für Ihr Suchfeld hinzufügen.

Schritt 2: Implementieren Sie den Stil

Erstellen Sie eine Datei „search.js“. Stellen Sie sicher, dass sie in die Datei „main.js“ importiert wird. Darin fügen wir den Code für die Klassen „searchBar“ und „searchInput“ hinzu.

//the container that acts as a search bar (with the icon)
export const searchBar = {
container: {
borderRadius: 8,
backgroundColor: "#ffffff",
borderWidth: 2,
borderColor: "#555555",
height: 50,
paddingLeft: 10,
paddingRight: 10
}
}
//the actual search input field
export const searchInput = {
input: {
backgroundColor: 'transparent',
borderColor: 'transparent',
//placeholder text color
placeholderTextColor: "#A4A4A6",
fontSize: 16,
borderRadius: 50
}
}

Endresultat:

Grafik zum Endergebnis von Lektion 2

Lektion 3: Overlay-Elemente

Zum Schluss schauen wir uns an, wie man einen Overlay-Effekt erzeugt, bei dem ein Element ein anderes teilweise überlappt. In diesem Beispiel erstellen wir eine Schaltfläche, die ein Bild teilweise überlappt.

Schritt 1: Layout einrichten

Ziehen Sie aus der Toolbox ein Bild und eine Schaltfläche auf die Seite. Ändern Sie das Symbol auf der Schaltfläche entsprechend.

Layoutgrafik einrichten

Geben Sie dem Bild die Klasse „proPic“ und den Button „overlapBtn“. Wir werden sie später stylen.

ProPic-Grafik

 

Aktionsschaltflächengrafik

Ich habe ein Layout mit einigen Textelementen unterhalb des Bildes und des Buttons erstellt. Dies ist jedoch optional. Wenn Sie dasselbe tun möchten, finden Sie hier die Anleitung:

  1. Erstellen Sie einen Container, der das Bild und die Schaltfläche umschließt. Fügen Sie dem Container einen „äußeren mittleren“ Abstand hinzu. Richten Sie den Container mittig aus.

Textelemente Schritt 1 Grafik

2. Erstellen Sie unterhalb des Containers ein Layoutraster und fügen Sie darin einige Textelemente hinzu. Fassen Sie alles in einen Container ein und geben Sie ihm die Klasse „popCard“ (die wir in Lektion 1 verwendet haben).

Textelemente Schritt 2 Grafik

Schritt 2: Implementieren Sie den Stil

Erstellen Sie eine neue Datei „overlay.js“. Stellen Sie sicher, dass sie in „main.js“ importiert ist. Der Schlüssel zum Erstellen eines überlappenden Elements besteht darin, den linken und/oder rechten Rand des Elements so zu bearbeiten, dass es bewusst gegen ein anderes Element auf dem Bildschirm positioniert wird.

Um das zu erreichen, müssen wir dem zugehörigen Rand eine negative Einheit hinzufügen. Die Logik dahinter ist ähnlich wie beim Erzeugen des Effekts, dass Elemente in die obere Leiste hineinlaufen (im Bonusabschnitt von Lektion 1).

//profile pic
export const proPic = {
image: {
borderRadius: 100,
width: 150,
height: 150,
},
container: {
borderWidth: 2,
borderColor: "#777777",
borderRadius: 100,
width: 150,
height: 150,
marginTop: 25
}
}

 

//button to edit the profile pic
export const overlapBtn = {
container: {
borderWidth: 2,
borderRadius: 50,
width: 32,
height: 32,
backgroundColor: "#E7E7E7",
marginRight: -75,
marginTop: -32,
borderRadius: 50,
borderColor: "#777777"
},
icon: {
color: "#000000",
size: 18
}
}

 

Endresultat:

Grafik zum Endergebnis von Lektion 3

Das ist alles für heute! Vielen Dank, dass Sie das Tutorial durchgearbeitet haben. Wenn Sie Fragen haben, lassen Sie es mich gerne wissen ([E-Mail geschützt] ).

Wählen Sie Ihre Sprache