1. 程式人生 > >【React Native開發】React Native控制元件之DrawerLayoutAndroid抽屜導航切換元件講解(13)

【React Native開發】React Native控制元件之DrawerLayoutAndroid抽屜導航切換元件講解(13)

轉載請標明出處:

()前言

      【好訊息】個人網站已經上線執行,後面部落格以及技術乾貨等精彩文章會同步更新,請大家關注收藏:http://www.lcode.org 

      今天我們一起來看一下抽屜DrawerLayoutAndroid導航切換控制元件的講解與基本使用。

剛建立的React Native技術交流1群(282693535),React Native交流2群:(496601483),請不要重複加群!歡迎各位大牛,React Native技術愛好者加入交流!同時部落格左側歡迎微信掃描關注訂閱號,移動技術乾貨,精彩文章技術推送!

DrawerLayoutAndroid元件封裝了Android

平臺的DrawerLayout控制元件(只限定與Android平臺)。該抽屜頁面(經常用於導航頁面)是通過renderNavigationView進行渲染的。該DrawerLayoutAndroid的中的子檢視會變成主檢視(主要用於放置內容)。我們知道導航選單中。導航欄的檢視在螢幕中一開始是隱藏的,但是我們可以通過drawerPostition指定位置進行把導航檢視拖拽出來,最終拖拽出來的距離大小可以使用drawerWidth屬性進行指定。

()使用基本介紹

該控制元件用起來也還是相對比較簡單的,只要熟悉一下其中基本的屬性和方法即可,下面來看官方的一個例項:

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */
'use strict';
import React, {
  AppRegistry,
  Component,
  StyleSheet,
  Text,
  View,
  DrawerLayoutAndroid,
} from'react-native';
 
class DrawerLayoutDemo extends Component {
  render() {
    var navigationView = (
    <View style={{flex: 1, backgroundColor:'#fff'}}>
      <Text style={{margin: 10, fontSize:15, textAlign: 'left'}}>I'm in the Drawer!</Text>
    </View>
  );
  return (
    <DrawerLayoutAndroid
      drawerWidth={300}
     drawerPosition={DrawerLayoutAndroid.positions.Left}
      renderNavigationView={() =>navigationView}>
      <View style={{flex: 1, alignItems:'center'}}>
        <Text style={{margin: 10, fontSize:15, textAlign: 'right'}}>Hello</Text>
        <Text style={{margin: 10, fontSize:15, textAlign: 'right'}}>World!</Text>
      </View>
    </DrawerLayoutAndroid>
   );
  }
}
const styles =StyleSheet.create({
});
AppRegistry.registerComponent('DrawerLayoutDemo',() => DrawerLayoutDemo);

執行效果如下:


()使用基本介紹

       3.1.View的屬性使用繼承了View控制元件的屬性資訊(例如:寬和高,背景顏色,邊距等相關屬性樣式)

       3.2.drawerPosition   引數為列舉型別(DrawerConsts.DrawerPosition.Left,DrawerConsts.DrawerPosition.Right)

進行指定導航選單用那一側進行滑動出來,根據官方例項最終傳入的兩個列舉值分別:DrawerLayoutAndroid.positions.LeftDrawerLayoutAndroid.positions.Right

       3.3.drawerWidth

進行指定導航選單檢視的寬度,也就是說該側面導航檢視可以從螢幕邊緣拖拽到螢幕的寬度距離

       3.4.keyboardDismissMode引數為列舉型別('none','on-drag') 進行指定在導航檢視拖拽的過程中是否要隱藏鍵盤

  • none   (預設值),預設不會隱藏鍵盤
  • on-drag  當拖拽開始的時候進行隱藏鍵盤

       3.5.onDrawerClose  function 方法當導航檢視被關閉後進行回撥該方法

       3.6.onDrawerOpen   function 方法當導航檢視被開啟後進行回撥該方法

       3.7.onDrawerSlide  function  方法當導航檢視和使用者進行互動的時候呼叫該方法

      3.8.onDrawerStateChanged function方法,該當導航檢視的狀態發生變化的時候呼叫該方法。該狀態會有以下三種狀態

  • idle (空閒) 表示導航檢視上面沒有任何互動狀態
  • dragging (正在拖拽中)   表示使用者正在和導航檢視產生互動動作
  • settling (暫停-剛剛結束表示使用者剛剛結束和導航檢視的互動動作,當前導航檢視正在開啟或者關閉拖拽滑動動畫效果

     3.9.renderNavigationViewfunction方法,該方法進行渲染一個導航抽屜的檢視(用於使用者從螢幕邊緣拖拽出來

()DrawerLayoutAndroid使用例項

具體基本使用例項程式碼如下:

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */
'use strict';
import React, {
  AppRegistry,
  Component,
  StyleSheet,
  Text,
  View,
  DrawerLayoutAndroid,
} from'react-native';
 
class DrawerLayoutDemo extends Component {
  render() {
    var navigationView = (
    <View style={{flex: 1, backgroundColor:'blue'}}>
      <Text style={{margin:10,color:'#fff',fontSize: 15, textAlign: 'center'}}>我是導航功能欄標題</Text>
      <Textstyle={{marginTop: 10,marginLeft:20,color:'#fff',fontSize: 15, textAlign:'left'}}>1.功能1</Text>
      <Textstyle={{marginTop: 10,marginLeft:20,color:'#fff',fontSize: 15, textAlign:'left'}}>2.功能2</Text>
    </View>
  );
  return (
    <DrawerLayoutAndroid
      drawerWidth={150}
     drawerPosition={DrawerLayoutAndroid.positions.left}
      renderNavigationView={() =>navigationView}>
      <View style={{flex: 1, alignItems:'center'}}>
        <Textstyle={{margin: 10, fontSize: 15, textAlign: 'right'}}>我是主佈局內容</Text>
      </View>
    </DrawerLayoutAndroid>
   );
  }
}
const styles =StyleSheet.create({
});
AppRegistry.registerComponent('DrawerLayoutDemo',() => DrawerLayoutDemo);

執行效果截圖:


()最後總結

今天我們主要學習一下DrawerLayoutAndroid抽屜導航檢視切換的介紹以及使用方法。大家有問題可以加一下群React Native技術交流群(282693535)或者底下進行回覆一下。

       關注我的訂閱號(codedev123),每天分享移動開發技術(Android/IOS),專案管理以及部落格文章!(歡迎關注,第一時間推送精彩文章)

     關注我的微博,可以獲得更多精彩內容