DrawerLayoutAndroid抽屉式组件 | React

2016-10-26  本文已影响0人  f8e5107ee6c8

请关注微信公众号,我们将在第一时间更新:

官网提供的属性:

指定抽屉的背景颜色。
默认值为白色。
若要设置抽屉的不透明度,请使用rgba。

  例:drawerBackgroundColor="rgba(188,0,202,0.5)"

指定抽屉从屏幕边缘拖进的视图宽度。

    例:drawerWidth={230}

指定抽屉可以从屏幕的哪一边滑入,可选参数:
DrawerLayoutAndroid.positions.Left
DrawerLayoutAndroid.positions.Right

   例:drawerPosition={DrawerLayoutAndroid.positions.Left}

设置抽屉的锁定模式,三种模式

设置拖动过程中是否隐藏软键盘,可选值有

使抽屉占满整个屏幕,并设置状态栏颜色(支持API21+/安卓系统5.0以上)

   例:statusBarBackgroundColor='red'

抽屉的状态变化时调用此回调函数

每当导航视图(抽屉)被打开之后调用此回调函数

  例:onDrawerOpen={()=>{console.log('打开了')}}

每当导航视图(抽屉)被关闭之后调用此回调函数

    例:onDrawerClose={()=>{console.log('关闭了')}}

每当导航视图(抽屉)产生交互的时候调用此回调函数

    例:onDrawerSlide={()=>console.log("正在交互......")}

用于渲染一个可以从屏幕一边拖入的导航视图

  例:renderNavigationView={() => navigationView}
let navigationView = (
  <View style={{flex:1}}>            
    <Text style={{margin:10,fontSize:24,color:'#188eee',}}>
      我是侧边栏/抽屉
    </Text>
    <TextInput style={{width:300,height:40,backgroundColor:'#fff'}}/>
    <TouchableHighlight
      onPress={()=>this.closeDrawer()}
      style={{padding:10,backgroundColor:'#e6e6e6',marginTop:20}}
    >
      <Text style={{textAlign:'center',}}>
        closeDrawer:关闭抽屉
      </Text>
    </TouchableHighlight>
 </View>
);

navigationView视图中如果设置了backgroundColor,会覆盖drawerBackgroundColor,不少人在这里遇坑,以为drawerBackgroundColor不起作用

DrawerLayoutAndroid 属性 code

<DrawerLayoutAndroid
    ref={'drawerLayout'}
    drawerBackgroundColor="rgba(188,0,202,0.5)"
    drawerWidth={230}     
    drawerPosition={DrawerLayoutAndroid.positions.Left}          
    renderNavigationView={() => navigationView} 
    onDrawerOpen={()=>{console.log('打开了')}} 
    onDrawerClose={()=>{console.log('关闭了')}}
    onDrawerSlide={()=>console.log("正在交互......")}
    onDrawerStateChanged={(state)=>this._DrawerStateChanged(state)} 
    drawerLockMode='locked-open'         
    keyboardDismissMode="on-drag"    
    statusBarBackgroundColor='red'
>

此组件还提供openDrawer 与 closeDrawer

openDrawer:打开抽屉
closeDrawer:关闭抽屉

实例:部分代码
openDrawer(){        
    this.refs.drawerLayout.openDrawer()
}
closeDrawer(){
    this.refs.drawerLayout.closeDrawer()
}
.....(省略其他)...
<TouchableHighlight
  onPress={()=>this.openDrawer()}
  style={{padding:10,backgroundColor:'#e6e6e6'}}
>
  <Text style={{textAlign:'center',}}>
    openDrawer:打开抽屉
  </Text>
</TouchableHighlight>
<TouchableHighlight
  onPress={()=>this.closeDrawer()}
  style={{padding:10,backgroundColor:'#e6e6e6'}}
>
  <Text style={{textAlign:'center',}}>
    closeDrawer:关闭抽屉
  </Text>
</TouchableHighlight>
最后的效果:

微信公众号:Domeday

推送时间为:

AM 7:00 ~ AM 8:30
PM 9:30 ~ PM 11:00

在互联网这个行业,技术的更新迭代速度很快,唯有不断学习和尝试,我们才能立于不败之地,人都是做自己原本不能胜任的事情中,才能快速成长。所以,不要让任何事情成为你不去学习的理由!,你学过的每一样东西,都会在你一生的某个时候派上用场的。

上一篇 下一篇

猜你喜欢

热点阅读