NavigationDrawer wo und wie anpassen? gelöst!

P

PEberhardt

Neues Mitglied
4
hallo,

wie angedroht die ersten Fragen zur Android Programmierung.
ich habe in Android Studio ein Demo Projekt erzeugt ( Navigation Drawer Activity )

ich hab mir mal alle xml Files angesehen, kann aber nirgends sehen wo man die Navigation an sich ändern kann.

NavDrawer.PNG


mfg
Peter
 
Hallo Peter


Schade , ich dachte du bliebst uns verschont :) ^^

Was meinst du denn genau mit " Verändern" , die Strings ? Menu Einträge ?? Farben ?

Schau mal in der "activity_main_drawer" da steht alles drin , diese verweisen wieder auf die "strings" und drawable
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: PEberhardt
Ich hätte da gerne ein Recycler View drin

Mfg
Peter
 
Auf der Seite wird gut erklärt wie man mit den Recyler View umgeht.

leider löst das mein Problem nicht, ich finde keine Möglichkeit die Navigation zu beeinflussen.
Kurz gesagt, ich will statt Import, Gallery, SlideShow und tool einen einfachen button haben.
in den 4 xml files die Android erzeugt sind keine hinweise auf Gallery, SlideShow und tool.
in der Design Ansicht ( activity_main.xml ) ist die Datei app_bar_main.xml included, und die included wiederum content_main.xml
und die hat nur ein textview mit hallo welt drin....

soll ich hier mal das Projekt einstellen?

Gerne kann ich aber auch Code posten
 
Hallo Peter,

den Quellcode brauchst du nicht zu posten - es handelt sich ja um ein default projekt
Hast du denn mal auch auf den Textmodus in der XML geschaltet und ein Code Expand gemacht ?

Da steht nämlich alles drin
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_camera"
android:icon="@drawable/ic_menu_camera"
android:title="Import"/>
<item
android:id="@+id/nav_gallery"
android:icon="@drawable/ic_menu_gallery"
android:title="Gallery"/>
<item
android:id="@+id/nav_slideshow"
android:icon="@drawable/ic_menu_slideshow"
android:title="Slideshow"/>
<item
android:id="@+id/nav_manage"
android:icon="@drawable/ic_menu_manage"
android:title="Tools"/>
</group>
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: PEberhardt
Schwere Geburt, bei mir ist alles Expandet...
in welcher Datei steht das von dir?
Aus welcher Datei ist das Listing ?
 
Guten Morgen Peter ,
in der activity_main_drawer.xml

Hatte ich aber eigentlich schon oben erwähnt :)


Ich hätte da gerne ein Recycler View drin.
Das steht im Link - Gradle dependency - Punkt 1.4
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: PEberhardt
Jetzt hab ich es verstanden,

hab die Vorschau des Drawers mit den Menü ( die 3 punkte ) verwechselt.

da die Vorschau nicht ganz angezeigt wird ( die zwei MenuPunkte des Communicate fehlen
und rechts dargestellt wird statt links

hab ich da großzügig drüber hinweg gesehen.

Bin dir sehr Dankbar, das Problem ist gelöst.

activity_main_drawer.xml.PNG

[doublepost=1477476243,1477469203][/doublepost]So, Datei gefunden, nur das anpassen geht nicht so ohne weiteres

es akzeptiert nur MenüItems, MenüSearch und Gruppen.
Das xml beginnt mit <menu wenn ich es auf <RelativeLayout ändere und alle MenüItems lösche Rendert das nicht mehr,

Vermute: liegt im Ordner menü muss also ein menü sein.....

Wie bekomme ich da jetzt einen einfachen Button drauf?
 
Hallo Peter,

nimm es mir nicht übel , aber dein Problem ist nicht zu erkennen.

a) Warum möchtest du in einem Menu einen Button haben ? Ein Menu besteht nur aus "Buttons" auf die du in deinem Quellcode reagierst
b) ich habe auch noch immer nicht verstanden , warum du oben das RecycleView ins Spiel bringst, obwohl es dir in erster Linie um die Veränderung des Menus geht.

Klär uns mal genau auf , was du denn versuchst umzusetzen - Klingt alles ein wenig verwirrend
 
Zuletzt bearbeitet:
Hallo,

letztendlich soll im Menü eine Liste mit Fahrzeugen sein,
das wird natürlich später ein RecyclerView sein,
Daten sollen dann aus einer Datenbank kommen.
( keine Angst, DBHelper Klasse und Adapter bring ich hin )

vielleicht kommt noch eine Frage in Richtung OnClickListener....

Der Button vereinfacht das erstmal, ich möchte da schritt für schritt angehen.
Das activity_main_drawer.xml muss ja irgendwie umgestellt werden,
so das man da auch andere widgets reinbringen kann. >> Button >> ListView ( ich weis, nimmt man nicht mehr... )

Grundsätzlich kann ich Programmieren ( Datenbank Anwendungen in Delphi "Objekt Pascal")
allerdings macht mich das verrückt wenn man für einen einfachen Button
keine Ahnung was machen muss um den zu setzen.
Sicherlich ist es für euch simple und ich hoffe für mich später auch.

Aktuell sind es Grundsatzfragen, bis das Layout mal steht.

Vielleicht gehe ich die Sache auch falsch an, und das "default projekt" ( Navigation Drawer Activity ) ist da nicht das Richtige.

Vielleicht erstmal die Umstellung der xml datei so das ich da einen normalen Button Platzieren kann.

Hoffe ich nerve nicht.


PS. das wird hier auch keine Eintagsfliege, ich möchte das unbedingt lernen,
da ich für meine Arbeit Tools am SmartPhone brauche, die mir meine Arbeit erleichtern
 
Hallo Peter,

du nervst nicht - ich "betreibe" das Ganze hier auch schon seit über 20 Jahren und ich habe die entsprechende Geduld :)

Ich erlaube mir , dich erst einmal darauf hinzuweisen, dass Android Java - leider gar nichts mit Pascal zu tun hat und du muss umdenken
(Ich entwickle hauptberuflich C/C++)
Da wirst du noch einige Verständnisshürden nehmen müssen (Besonders in der "anderen" Objektprogrammierung)

Ich lege Dir auch wärmstens ans Herz , bevor du in die Tiefe gehst, dich mit der Eigenart von Android auseinander
zu setzen (insbesondere LifeCycle & GarbageCollector) und auch muss du wissen , dass KEINE statischen / bzw Globale Variablen
existieren, wie du sie von Pascal / C etc. her kennst. (SingleTon)
Wenn du das nicht von Anfang an inne hast, suchst du dir den Wolf in der einer App, weil dir plötzlich bereits gesetzte Variablen
verloren gehen oder schlichtweg null sind


Zu deinem NavigationDrawer :

Du kannst dem entweder ein Menu oder ein Recycle View geben (nesten) - NICHT beides
Bleibe bitte erst mal beim Menu - der RecycleView ist für einen Anfänger noch ein wenig too much.
Du musst erst mal verstehen , wie alle zusammenhängt und eine ReycleView ist mit ein wenig praxis umsetzbar

Hier mal was zum Lesen , das ist nicht trivial - besonders muss man 100 % Fit in Adapter sein
How To Make Material Design Navigation Drawer With Header View: Android For Devs
.


Wie du die Menueinträge veränderst hast du ja schon heraus bekommen .

In deiner MainActivity hast du einen "Listener" der auf dein Tippen im Menu reagiert
public boolean onNavigationItemSelected(MenuItem item)

Und von dort aus kannst du dann weiter machen ...
 
Hallo,

irgendwo hängts noch, es lässt sich nichts "nested" einbinden

Code:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

// so ware es ja direkt <<<<<
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_recyclerteste"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false"
        android:elevation="0dp"
        android:paddingBottom="80dp" />

// so nested <<<<<
    <include
        layout="@layout/test"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


</menu>

leider ohne das es in der App angezeigt wird......
 
Peter ,

bei aller liebe .........

Ich helfe ja gerne , aber eben bekomme ich das Gefühl , dass du meine Zeilen irgendwie ignorierst.
Oder mich schlichtweg nicht verstehst.

Eben habe ich dir oben geschrieben : ENTWEDER - ODER

Ausserdem : Hast du bereits deinen Adapter angelegt , ihn gefüllt und zugewiesen ??
Ohne dies wird eh nix angezeigt , auch wenn du es richtig gemacht hättest :)

Du beginnst mit etwas, was normalerweise schon einige Praxis voraussetzt.

P.S include directives , so wie du sie da einsetzt , sind nicht zulässig
 
Hallo Stefan,

ich würde eben gerne das einfache zuerst machen
wie neste ich zum Beispiel eine test.xml datei in das activity_main_drawer.xml ein?

wenn das dann drin ist binde ich meine Liste in die test.xml ein, baue den adapter und so weiter...

Bitte sei nicht genervt, im Code oben hätte sicherlich das <menu nicht herein gedurft, aber auch ohne ging das nicht.
selbst wenn der Adapter angelegt, gefüllt und zugewiesen gewesen wäre würde ich das nested nicht hinbekommen
 
Mir ist bewusst, was du vorhast :)

Nur ist das leider nicht das Einfache, sonder schon sehr fortgeschritten.
(Oder was denkst du wohl, gibt es kein RecycleView / Drawer example in AndroidStudio als Default - das hat seinen Grund)

Du musst (für dich ) hinten Anfangen - Technik kommt zuerst , dann erst klicki klicki bunti.

Wenn du RecycleView mit NavigationDraw verstehen möchtest.

a) Verstehe den NavigationDrawer als Basis ( Menu)
b) Reagiere auf Listener - verinnerliche , was Listener sind , was sie tun und vor allem , von welcher Klasse sie abgeleitet sind
c) An der Stelle - Was sind Overrides - ganz wichtig
d) Dann baust du dir ein einfaches ListView und füllst es mit einem statischen Array und reagierst auf die Einträge, wenn man sie klickt
e) Dann erweiterst du den ListView mit einem mehrfach Adapter

Erst DANN bist du soweit , den RecycleView einzubinden , dann verstehst du auch , was wo hinkommt und warum

Android ist kein Spaghettiprogramm a la Pascal oder Basic - Android baut fast nur auf Threads und jede Menge Tasks auf
 
Zuletzt bearbeitet:
Hallo Stefan,

hätte ich nur das Recycler View nicht erwähnt.
das a) bis e) kompliziert ist ist mir klar, und auf einer einfachen activity mit einen button einen editfeld und drunter das recyclerview
mit Datenbankanbindung dass bekomme ich schon hin.

meine einzige frage ist eigentlich:
>> wie kann ich in den NavigationDrawer eine andere xml datei ( das später meine Listen beinhaltet ) einbinden?

wenn es zu komplex zu erklären ist, lassen wir das und ich bau die App generell im Querformat und die Liste ist links fest.

PS. ich hab mir als Wissensbasis 3 Videoschulungen direkt über Android Studio und 3 Videoschulungen über Java gekauft und angesehen
denke das waren insgesamt 50 Std. ein klein wenig weis ich schon wie es geht, nur weiss ich eben nicht wie ich in den Drawer eine liste rein bekomme
 
>> wie kann ich in den NavigationDrawer eine andere xml datei ( das später meine Listen beinhaltet ) einbinden?

In der activity_main hat die View die id _nav_view, dort werden auch die anderen Elemente gesetzt

<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"/>
 
Zuletzt bearbeitet:
so, jetzt hab ich es erstmal so wie ich es wollte
Besten Dank für deine Hinweise.

Code:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/txtview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TEST"/>
    </RelativeLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start">
        
<!-- hier wird meine recyclerviews.xml include -->
        <include
            layout="@layout/recyclerviews"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
        
    </android.support.design.widget.NavigationView>
    
</android.support.v4.widget.DrawerLayout>



Hier noch der OnClick Code:

Code:
package de.domain.simplenav;

import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ((Button)findViewById(R.id.btn_test1)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

              <!-- Test ob der ClickHandler auch geht -->
                ((TextView)findViewById(R.id.txtview)).setText("geht!!");
                
                DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer);
                drawer.closeDrawer(GravityCompat.START);
                
            }
        });
    }
}
 
Das sieht auch schon weit besser aus , als gestern :)

Herzlichen Glückwunsch und noch viel Erfolg :)
 

Ähnliche Themen

B
Antworten
0
Aufrufe
641
Ben1703
B
Laser5001
Antworten
3
Aufrufe
629
swa00
swa00
C
  • CoderboyPB
Antworten
3
Aufrufe
915
swa00
swa00
Zurück
Oben Unten