wake-up-neo.net

Was sind die neuen Funktionen von Android Design Support Library und wie wird die Snackbar verwendet?

Android M Preview für Entwickler wurde gestern veröffentlicht. Wie üblich werden viele erstaunliche neue Funktionen eingeführt. Mir ist aufgefallen, dass Snackbar einer von ihnen ist.

Ich habe das Dokument über Snackbar gelesen, aus dem ich erfuhr, dass sich Snackbar in der Bibliothek von Android Design Support Library befindet, deren absoluter Pfad Android.support.design.widget.Snackbar .

Und das Dokument sagt, dass:

Snackbars geben ein leichtes Feedback zu einer Operation. Sie zeigen eine kurze Meldung am unteren Bildschirmrand auf Mobilgeräten und bei größeren Geräten links unten an. Snackbars werden über allen anderen Elementen auf dem Bildschirm angezeigt und es kann immer nur eines angezeigt werden.

Sie verschwinden automatisch nach einer Zeitüberschreitung oder nach einer Benutzerinteraktion an einer anderen Stelle auf dem Bildschirm, insbesondere nach Interaktionen, die eine neue Oberfläche oder Aktivität hervorrufen. Snackbars können vom Bildschirm gewischt werden.

Verhält sich Snackbar also wie ein Toast oder ein Dialog? Können Snackbars in einer Layoutdatei verwendet werden? Wie könnte ich es programmatisch verwenden?

P.S.:

  • Alle Proben auf Gebrauch von Snackbar werden geschätzt.
  • Android Design Support Library ist eine neue Support-Bibliothek. Kann mir jemand weitere Details zu dieser Bibliothek zeigen?
34
SilentKnight

Snackbar verhält sich wie Toast, unterscheidet sich jedoch von Toast. Snackbars werden am unteren Bildschirmrand angezeigt und enthalten Text mit einer optionalen Einzelaktion. Sie werden automatisch nach Ablauf der angegebenen Zeitdauer beendet, indem sie vom Bildschirm animiert werden. Darüber hinaus können Benutzer sie vor dem Timeout wegwischen, was erheblich leistungsfähiger ist als Toast, ein weiterer leichter Feedback-Mechanismus.

Sie können es programmgesteuert wie folgt verwenden:

Snackbar snackbar = Snackbar
  .make(parentLayout, R.string.snackbar_text, Snackbar.LENGTH_LONG)
  .setAction(R.string.snackbar_action, myOnClickListener);
snackbar.setActionTextColor(Color.CYAN);
View snackbarView = snackbar.getView();
snackbarView.setBackgroundColor(Color.YELLOW);//change Snackbar's background color;
TextView textView = (TextView)snackbarView .findViewById(Android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.BLUE);//change Snackbar's text color;
snackbar.show(); // Don’t forget to show!

Beachten Sie, dass die Verwendung einer Ansicht in der Methode von make() - Snackbar versucht, sie zu finden, um sicherzustellen, dass sie am Boden verankert ist.

Was mehr ist, Android Design Support Library wird verwendet für Android 2.1+ (API 7 +), welche Funktionen Ansicht der Navigationsleiste, Floating Labels zum Bearbeiten von Text, Floating Action Button, Snackbar, Tabs und so ähnlich.

Navigationsansicht

Die Navigationsleiste kann ein wichtiger Schwerpunkt für die Identität und Navigation in Ihrer App sein, und eine einheitliche Gestaltung kann einen erheblichen Unterschied darin bewirken, wie einfach die Navigation in Ihrer App ist, insbesondere für Erstbenutzer. NavigationView vereinfacht dies, indem es das für die Navigationsleiste erforderliche Framework sowie die Möglichkeit bietet, Ihre Navigationselemente über eine Menüressource aufzublasen.

Du kannst es so benutzen:

<Android.support.v4.widget.DrawerLayout
        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">
    <!-- your content layout -->
    <Android.support.design.widget.NavigationView
            Android:layout_width="wrap_content"
            Android:layout_height="match_parent"
            Android:layout_gravity="start"
            app:headerLayout="@layout/drawer_header"
            app:menu="@menu/drawer"/>
</Android.support.v4.widget.DrawerLayout>

Das Schubladenmenü könnte wie folgt aussehen:

<group Android:checkableBehavior="single">
    <item
        Android:id="@+id/navigation_item_1"
        Android:checked="true"
        Android:icon="@drawable/ic_Android"
        Android:title="@string/navigation_item_1"/>
    <item
        Android:id="@+id/navigation_item_2"
        Android:icon="@drawable/ic_Android"
        Android:title="@string/navigation_item_2"/>
</group>

oder:

<item
    Android:id="@+id/navigation_subheader"
    Android:title="@string/navigation_subheader">
    <menu>
        <item
            Android:id="@+id/navigation_sub_item_1"
            Android:icon="@drawable/ic_Android"
            Android:title="@string/navigation_sub_item_1"/>
        <item
            Android:id="@+id/navigation_sub_item_2"
            Android:icon="@drawable/ic_Android"
            Android:title="@string/navigation_sub_item_2"/>
    </menu>
</item>

Sie erhalten Rückrufe für ausgewählte Elemente, wenn Sie mit setNavigationItemSelectedListener () einen OnNavigationItemSelectedListener festlegen. Auf diese Weise erhalten Sie das angeklickte Menüelement, mit dem Sie Auswahlereignisse bearbeiten, den aktivierten Status ändern, neuen Inhalt laden, die Schublade programmgesteuert schließen oder andere gewünschte Aktionen ausführen können.

Floating Labels zum Bearbeiten von Text

Auch der bescheidene EditText hat Raum für Verbesserungen im Materialdesign. Während ein EditText allein den Hinweistext verdeckt, nachdem das erste Zeichen eingegeben wurde, können Sie ihn jetzt in ein TextInputLayout umbrechen, wodurch der Hinweistext zu einem wird ) Floating Label über dem EditText, um sicherzustellen, dass Benutzer den Kontext bei der Eingabe nicht verlieren. Zusätzlich zum Anzeigen von Hinweisen können Sie auch eine Fehlermeldung unter der EditText anzeigen, indem Sie setError() aufrufen.

Floating Action Button

Eine schwebende Aktionstaste ist eine runde Taste, die eine primäre Aktion auf Ihrer Benutzeroberfläche kennzeichnet. Mit der FloatingActionButton der Design-Bibliothek erhalten Sie eine einheitliche Implementierung, die standardmäßig mit dem colorAccent aus Ihrem Design eingefärbt ist.

Wenn FloatingActionButtonImageView erweitert, verwenden Sie Android:src Oder eine der Methoden wie setImageDrawable(), um das in FloatingActionButton angezeigte Symbol zu steuern. ].

Tabulatoren

Das Navigationsmuster auf oberster Ebene wird häufig zum Organisieren verschiedener Inhaltsgruppierungen verwendet. Die TabLayout der Entwurfsbibliothek implementiert sowohl feste Registerkarten, bei denen die Breite der Ansicht gleichmäßig auf alle Registerkarten aufgeteilt ist, als auch scrollbare Registerkarten, bei denen die Registerkarten keine einheitliche Größe haben und horizontal gescrollt werden können.

Tabulatoren können programmgesteuert hinzugefügt werden:

TabLayout tabLayout = ...;
tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));

Wenn Sie ViewPager für horizontales Blättern zwischen Registerkarten verwenden möchten, können Sie Registerkarten direkt aus Ihrem PagerAdapter’sgetPageTitle() erstellen und die beiden dann mit setupWithViewPager() miteinander verbinden. Dadurch wird sichergestellt, dass Registerauswahlereignisse die ViewPager aktualisieren und Seitenänderungen das ausgewählte Register aktualisieren.

CoordinatorLayout und die App-Leiste

die Entwurfsbibliothek führt CoordinatorLayout ein, ein Layout, das eine zusätzliche Kontrolle über Berührungsereignisse zwischen untergeordneten Ansichten bietet, was viele Komponenten in der Entwurfsbibliothek nutzen. Wenn Sie versuchen, ein AppBarLayout zu verwenden, können Ihre Toolbar und andere Ansichten (z. B. die von TabLayout bereitgestellten Registerkarten) auf Bildlaufereignisse in einer mit einem ScrollingViewBehavior gekennzeichneten Geschwisteransicht reagieren. Daher können Sie ein Layout erstellen wie:

<Android.support.design.widget.CoordinatorLayout
        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">

     <! -- Your Scrollable View -->
    <Android.support.v7.widget.RecyclerView
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <Android.support.design.widget.AppBarLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content">
   <Android.support.v7.widget.Toolbar
                  ...
                  app:layout_scrollFlags="scroll|enterAlways">

        <Android.support.design.widget.TabLayout
                  ...
                  app:layout_scrollFlags="scroll|enterAlways">
     </Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>

Wenn der Benutzer nun durch das RecyclerView scrollt, kann das AppBarLayout auf diese Ereignisse reagieren, indem es die Scroll-Flags der Kinder verwendet, um zu steuern, wie sie eintreten (auf dem Bildschirm scrollen) und verlassen (vom Bildschirm scrollen).

Die Designbibliothek, AppCompat und die gesamte Android Support Library sind wichtige Werkzeuge, um die Bausteine ​​für die Erstellung einer modernen, gut aussehenden Android App ohne Alles von Grund auf neu bauen.

20
SilentKnight

Das neue Snackbar benötigt kein Android-M.

Es befindet sich in der new design support library und kann noch heute verwendet werden.

Aktualisieren Sie einfach Ihr SDK und fügen Sie diese Abhängigkeit in Ihren Code ein:

compile 'com.Android.support:design:22.2.0'

Sie können einen Code wie diesen verwenden:

Snackbar.make(view, "Here's a Snackbar", Snackbar.LENGTH_LONG)
        .setAction("Action", null)
        .show();

Es ist wie ein Toast.

enter image description here

Um eine Aktion zuweisen müssen Sie den OnClickListener setzen.

Snackbar.make(view, "Here's a Snackbar", Snackbar.LENGTH_LONG)
        .setAction("Action", myOnClickListener)
        .show();

Wenn Sie den Hintergrund ändern möchten Farbe können Sie so etwas verwenden:

 Snackbar snackbar = Snackbar.make(view, "Here's a Snackbar",       
                   Snackbar.LENGTH_LONG);
 View snackBarView = snackbar.getView();
 snackBarView.setBackgroundColor(colorId);
 snackbar.show();

enter image description here

Wenn Sie einige eingebaute Funktionen haben möchten, wie die Swipe-to-Dismiss - Geste oder das FAB-Scrollen in der Snackbar, einfach mit einem - CoordinatorLayout in Ihrer Ansichtshierarchie.

54

Auf Activity können Sie verwenden:

String s = "SnackBar"
Snackbar.make(findViewById(Android.R.id.content), s, Snackbar.LENGTH_LONG).show();

und auf Fragment:

Snackbar.make(getView(), s, Snackbar.LENGTH_LONG).show();

Bearbeiten:

Zum Ändern der Hintergrundfarbe verwende ich Folgendes:

String s = "SnackBar"
Snackbar snack = Snackbar.make(getView(), s, Snackbar.LENGTH_LONG);
View view = snack.getView();
view.setBackgroundColor(Color.YELLOW); 
snack.show();

Und zum Ändern der Textfarbe (trotz Thema):

View view = snack.getView();
TextView tv = (TextView) view.findViewById(Android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);

Klappt wunderbar ;-)

36

Ich stelle die Codierung ein

Snackbar snackbar = Snackbar
        .make(getView(), text, Snackbar.LENGTH_INDEFINITE);

View sbView = Global.alert.getView();
sbView.setBackgroundColor(0xFF000000);

TextView textView = (TextView) sbView.findViewById(Android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.WHITE);
textView.setTextSize(30);

Global.alert.show();
0
Pong Petrung

schon gesehen? http://Android-developers.blogspot.in/2015/05/Android-design-support-library.html ?

es fasst die gesamte Unterstützungsbibliothek zusammen.

0
Anand Kumar

Die Snackbar kann auch Symbole anzeigen.

Beispiel: In keinem Netzwerk können Sie eine solche Snackbar anzeigen (genau wie in Google Mail).

SpannableStringBuilder builder = new SpannableStringBuilder();
    builder.append(" ").setSpan(new ImageSpan(this, R.drawable.snackbar_icon), 0, 1, 0);
    builder.append(" No Network Available");
    Snackbar snackBar = Snackbar.make(findViewById(R.id.co_ordinate), builder, Snackbar.LENGTH_LONG);
    snackBar.setAction("RETRY", new View.OnClickListener() {
        @Override
        public void onClick(View v) { //Retry Code here 

        }
    });
    snackBar.show();
0
Neo

sie können auch die Textfarbe und den Hintergrund der Snackbar ändern

 Snackbar snackbar = Snackbar.make(view, "Text",
                            Snackbar.LENGTH_LONG);
                    View snackBarView = snackbar.getView();
                    TextView tv = (TextView) snackBarView.findViewById(Android.support.design.R.id.snackbar_text);
                    tv.setTextColor(ContextCompat.getColor(MainActivity.this, R.color.colorAccent));
                    snackBarView.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.colorPrimaryDark));
                    snackbar.show();
0
Jatin Devani