Heutzutage besteht die Tendenz, dass Materialdesign gehalten und geflüstert wird. Es ist sehr wichtig, dass das Erscheinungsbild erfrischend ist, aber ich hoffe nur, dass die Benutzerfreundlichkeit nicht unbefriedigend ist, ohne sich auf das Erscheinungsbild zu konzentrieren.
Persönlich denke ich, dass das aktuelle iOS ein Beispiel ist ...
Abgesehen davon denke ich, dass es notwendig ist zu wissen, was Materialdesign ist, also machen wir es gleich!

Diesmal brauchen wir "com.android.support: design". Wenn Sie SVG für die Fab-Schaltfläche verwenden, müssen Sie auch "com.android.support: support-vector-drawable" einschließen. Wenn minSdkVersion kleiner als ** 21 ** ist, müssen Sie ** Support Library ** verwenden, damit sich die Beschreibungsmethode geringfügig ändert. Achtung.
build.gradle
android {
  compileSdkVersion 26
  buildToolsVersion "26.0.1"
  defaultConfig {
    ...
    minSdkVersion 19
    targetSdkVersion 26
    vectorDrawables.useSupportLibrary = true  //Hinweis:Diese Beschreibung ist abhängig von der minSdkVersion erforderlich, wenn das SVG-Symbol verwendet wird.(Diesmal ist es 19, also ist es notwendig)
  }
  buildTypes {
    ...
  }
}
dependencies {
  compile fileTree(include: ['*.jar'], dir: 'libs')
  compile 'com.android.support:appcompat-v7:26.1.0'
  compile 'com.android.support:support-v4:26.1.0'
  compile 'com.android.support:design:26.1.0'
  compile 'com.android.support:support-vector-drawable:26.1.0'
}
 
Wenn Sie dieses Mal das SVG-Symbol verwenden möchten, klicken Sie mit der rechten Maustaste auf [App] -> [Res] -> [Drawable], wählen Sie [New] -> [Vector Asset] und sagen Sie "Add" *** Wenn Sie das Symbol ** markieren, wird eine Datei mit dem Namen *** ic_add_black_24dp.xml *** erstellt. Ich wollte ein weißes Symbol, also fügte ich der erstellten XML-Datei "android: fillColor =" @ color / white "" hinzu und speicherte es als *** ic_add_white_24dp.xml ***. Der Beispielcode bezieht sich auf diese Datei. Ändern Sie ihn daher entsprechend Ihrer Umgebung.
ic_add_white_24dp.xm
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportHeight="24.0"
        android:viewportWidth="24.0">
  <path
      android:fillColor="@color/white"
      android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
</vector>
Dieses Mal habe ich mit "Listenansicht" + "Unteres Blatt" einen einfachen Bildschirm für die Liste / Bearbeitung von Freunden erstellt. Unten ist der Beispielcode.
MainActivity.java
public class MainActivity extends AppCompatActivity {
  private BottomSheetBehavior behavior;
  private ArrayList<String> friend;
  private ArrayAdapter<String> friend_adapter;
  private int position;  //Denken Sie daran, auf welche Zeile in der ListView geklickt wurde
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // toolbar
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    // bottom sheet
    View bottomSheet = findViewById(R.id.bottom_sheet);
    behavior = BottomSheetBehavior.from(bottomSheet);
    behavior.setState(BottomSheetBehavior.STATE_HIDDEN);
    // friend data
    friend = new ArrayList<>();
    for (int i = 0; i < 30; i++) {
      friend.add("Freund" + i);
    }
    friend_adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, friend);
    ListView friendList = findViewById(R.id.list_friend);
    friendList.setAdapter(friend_adapter);
    friendList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        //Wenn Sie auf Freundesliste klicken, wird das untere Blatt geöffnet. Schließen, falls bereits geöffnet.
        if (behavior.getState() == BottomSheetBehavior.STATE_EXPANDED) {
          behavior.setState(BottomSheetBehavior.STATE_HIDDEN);
        } else {
          behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
          position = i;
        }
      }
    });
    // fab button
    FloatingActionButton mFab = findViewById(R.id.fab_button);
    mFab.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        // editText view
        final EditText input = new EditText(MainActivity.this);
        input.setInputType(InputType.TYPE_CLASS_TEXT);
        input.setMaxLines(1);
        // create dialog
        new AlertDialog.Builder(MainActivity.this)
                .setTitle("Anmelden")
                .setMessage("Bitte geben Sie Ihren registrierten Namen ein")
                .setView(input)
                .setPositiveButton("Anmeldung", new DialogInterface.OnClickListener() { //OK-Tasteneinstellungen
                  public void onClick(DialogInterface dialog, int whichButton) {
                    friend.add(input.getText().toString());
                    friend_adapter.notifyDataSetChanged();
                    dialog.dismiss();
                  }
                })
                .setNegativeButton("Stornieren", new DialogInterface.OnClickListener() { // Stornierenボタンの設定
                  public void onClick(DialogInterface dialog, int whichButton) {
                    dialog.dismiss();
                  }
                })
                .show();
        behavior.setState(BottomSheetBehavior.STATE_HIDDEN);
      }
    });
    // menu list
    ArrayAdapter<String> menu_adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
    menu_adapter.add("umbenennen");
    menu_adapter.add("Löschen");
    menu_adapter.add("schließen");
    ListView menuList = findViewById(R.id.list_menu);
    menuList.setAdapter(menu_adapter);
    menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {
        switch (i) {
          case 0:
            // editText view
            final EditText input = new EditText(MainActivity.this);
            input.setInputType(InputType.TYPE_CLASS_TEXT);
            input.setMaxLines(1);
            // create dialog
            new AlertDialog.Builder(MainActivity.this)
                    .setTitle("umbenennen")
                    .setMessage(friend.get(position) + "Umbenennen")
                    .setView(input)
                    .setPositiveButton("Veränderung", new DialogInterface.OnClickListener() { //OK-Tasteneinstellungen
                      public void onClick(DialogInterface dialog, int whichButton) {
                        friend.set(position, input.getText().toString());
                        friend_adapter.notifyDataSetChanged();
                        dialog.dismiss();
                      }
                    })
                    .setNegativeButton("Stornieren", new DialogInterface.OnClickListener() { // Stornierenボタンの設定
                      public void onClick(DialogInterface dialog, int whichButton) {
                        dialog.dismiss();
                      }
                    })
                    .show();
            break;
          case 1:
            // create dialog
            new AlertDialog.Builder(MainActivity.this)
                    .setTitle("Löschen")
                    .setMessage(friend.get(position) + "Möchten Sie wirklich löschen")
                    .setPositiveButton("Löschen", new DialogInterface.OnClickListener() { //OK-Tasteneinstellungen
                      public void onClick(DialogInterface dialog, int whichButton) {
                        friend.remove(position);
                        friend_adapter.notifyDataSetChanged();
                        dialog.dismiss();
                      }
                    })
                    .setNegativeButton("Stornieren", new DialogInterface.OnClickListener() { // Stornierenボタンの設定
                      public void onClick(DialogInterface dialog, int whichButton) {
                        dialog.dismiss();
                      }
                    })
                    .show();
            break;
        }
        behavior.setState(BottomSheetBehavior.STATE_HIDDEN);
      }
    });
  }
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<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">
  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical">
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        app:theme="@style/ThemeOverlay.AppCompat.ActionBar"/>
    <ListView
        android:id="@+id/list_friend"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
  </LinearLayout>
  <LinearLayout
      android:id="@+id/bottom_sheet"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:background="@android:color/white"
      android:orientation="vertical"
      app:behavior_hideable="true"
      app:behavior_peekHeight="200dp"
      app:layout_behavior="@string/bottom_sheet_behavior">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="15dp"
        android:layout_marginTop="15dp"
        android:text="Menu"
        android:textSize="18sp"/>
    <ListView
        android:id="@+id/list_menu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@color/white"/>
  </LinearLayout>
  <android.support.design.widget.FloatingActionButton
      android:id="@+id/fab_button"
      android:layout_width="56dp"
      android:layout_height="56dp"
      android:layout_margin="20dp"
      app:layout_anchor="@id/bottom_sheet"
      app:layout_anchorGravity="right|top"
      app:srcCompat="@drawable/ic_add_white_24dp"/>
</android.support.design.widget.CoordinatorLayout>
Ich denke, es ist eine gute Idee, es zu kopieren und einzufügen, damit es funktioniert. Es gibt keine so schwierige Beschreibung, daher besteht die Abkürzung darin, Ihr Verständnis zu fummeln und zu vertiefen, während Sie einige Änderungen vornehmen.