UNPKG

at-rn-android-kit

Version:

为 React Native 开发 提供的一些Android原生模块/组件 (react native, CoordinatorLayout, AppBarLayout, TabLayout, NestedScrollView, PopupWindow)

67 lines (55 loc) 1.84 kB
import React, { PureComponent, } from 'react'; import { UIManager, View, findNodeHandle, requireNativeComponent } from 'react-native'; import AppBarLayout from './appbar-layout'; import Layout from './layout'; import {ViewGroupProperties} from './types'; export interface CoordinatorLayoutProps extends ViewGroupProperties { } const MaoKitsCoordinatorLayoutManager: any = UIManager.MaoKitsCoordinatorLayoutAndroid; const COMMAND_SET_SCROLLING_VIEW_BEHAVIOR = MaoKitsCoordinatorLayoutManager.Commands.setScrollingViewBehavior; const COMMAND_RESET_BEHOVIOR = MaoKitsCoordinatorLayoutManager.Commands.resetBehavior; export default class CoordinatorLayout extends PureComponent<CoordinatorLayoutProps, any> { componentDidMount() { Layout.setChildrenLayoutParams(this, MaoKitsCoordinatorLayoutManager); } componentDidUpdate() { Layout.setChildrenLayoutParams(this, MaoKitsCoordinatorLayoutManager); } render() { return ( <RCTCoordinatorLayout {...this.props} > {this.props.children} </RCTCoordinatorLayout> ); } setScrollingViewBehavior(view: any) { UIManager.dispatchViewManagerCommand( findNodeHandle(this), COMMAND_SET_SCROLLING_VIEW_BEHAVIOR, [findNodeHandle(view)] ); } resetBehavior(appbar: AppBarLayout, nestedScrollEnabled = true, smoothly: boolean = false) { UIManager.dispatchViewManagerCommand( findNodeHandle(this), COMMAND_RESET_BEHOVIOR, [findNodeHandle(appbar), nestedScrollEnabled, smoothly] ); } } const RCTCoordinatorLayout: any = requireNativeComponent( 'MaoKitsCoordinatorLayoutAndroid', CoordinatorLayout, { nativeOnly: {} } );