English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Introduzione all'uso di DrawerLayout per il menu laterale in Android

In android support.v4 c'è un controllo di vista a scomparsa DrawerLayout. Utilizzando questo controllo, è possibile aprire o chiudere il menu scorrendo orizzontalmente sullo schermo, offrendo un'esperienza utente eccellente.

DrawerLayout è diviso in due parti: il menu laterale e l'area di contenuto principale. Il menu laterale può essere espanso e nascosto tramite gesti, mentre l'area di contenuto principale può cambiare quando si clicca sul menu. In realtà, DrawerLayout è un controllo, simile a LinearLayout, e può essere utilizzato direttamente.

Attributi di DrawerLayout

1、drawerPosition:specifica che il drawer si muoverà da un lato dello schermo.

2、drawerWidth : specifica la larghezza del drawer, ossia la larghezza più precisa dal margine dello schermo fino alla vista.

3、keyboardDismissMode: Determina se la tastiera risponde al respingimento del trascinamento.

  • 'none' (valore predefinito), il trascinamento non influisce sulla tastiera.
  • 'on-drag', inizio del trascinamento, la tastiera viene respinta.

4、onDrawerClose: La funzione viene chiamata quando la vista di navigazione viene chiusa.

5、onDrawerOpen: La funzione viene chiamata quando la vista di navigazione viene aperta.

6、onDrawerSlide: La funzione viene chiamata durante l'interazione con la vista di navigazione.

7、onDrawerStateChanged: La funzione viene chiamata quando lo stato del Drawer cambia, il drawer ha 3 stati: 

  •  idle -- Indica che non c'è alcuna interazione con la vista di navigazione
  •  dragging -- Indica che c'è un'interazione in corso con la vista di navigazione
  •  settling -- Indica che c'è un'interazione con la vista di navigazione e la vista di navigazione sta chiudendo o aprendo.

8、renderNavigationView: La mappa di navigazione verrà visualizzata sul lato dello schermo e può essere estratta.

Esempio

Utilizzo delle dipendenze importate

compile 'com.android.support:appcompat-v7:24.2.1' 

File di layout

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/v4_drawerlayout"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <FrameLayout
    android:id="@+id/v4_drawerlayout_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:id="@+id/v4_text"
      android:textSize="22sp"
      android:textColor="@color/colorAccent"
      android:gravity="center"
      />
  </FrameLayout>
  <ListView
    android:layout_width="200dp"
    android:layout_height="match_parent"
    android:layout_gravity="left"
    android:id="@+id/v4_listview"
    android:choiceMode="singleChoice"
    android:background="@android:color/white" />
</android.support.v4.widget.DrawerLayout> 

Activity

public class DrawerActivity extends AppCompatActivity {
  private ListView listView;
  private DrawerLayout drawerLayout;
  private TextView textView;
  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.drawer_activity);
    initView();
  drawerLayout.closeDrawer(Gravity.LEFT);
  private void initView()
  {
    listView=(ListView) findViewById(R.id.v4_listview);
    drawerLayout=(DrawerLayout) findViewById(R.id.v4_drawerlayout);
    textView=(TextView) findViewById(R.id.v4_text);
    initDate();
  drawerLayout.closeDrawer(Gravity.LEFT);
  private void initDate(){
    final List<String> list = new ArrayList<String>();
    list.add("网易");
    list.add("腾讯");
    list.add("新浪");
    list.add("搜狐");
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        textView.setText(list.get(position));
        showDrawerLayout();
      drawerLayout.closeDrawer(Gravity.LEFT);
    });
    drawerLayout.openDrawer(Gravity.LEFT);//Apertura laterale non impostata non verrà aperto per default
  drawerLayout.closeDrawer(Gravity.LEFT);
  private void showDrawerLayout() {
    if (!drawerLayout.isDrawerOpen(Gravity.LEFT)) {
      drawerLayout.openDrawer(Gravity.LEFT);
    else {
      }
    drawerLayout.closeDrawer(Gravity.LEFT);
  drawerLayout.closeDrawer(Gravity.LEFT);
drawerLayout.closeDrawer(Gravity.LEFT); 

}

Effetto di esecuzione come nella figura:Indirizzo di download:

Drawerlayout_jb51.rar

Questo è tutto il contenuto dell'articolo, speriamo che sia utile per il tuo studio e che tu sostenga attivamente la guida Yell.

Ti potrebbe interessare