Flex之TabNavigator

TabNavigator默认是只初始化第一个TAB的,设一下属性,设了后会初始化其他TAB,creationPolicy="all"

补充下tab里面的容器是Canvas

动态生成TabNavigator tab页面

var canvas: Canvas = new Canvas();
canvas.label = "new Tab";
tabNavigator.addChild(canvas);

 

------------------------------------------------------

 

TabNavigator不仅可以支持Canvas作为子tab,也支持VBox作为子tab

我们想设置其样式,纯粹设置TabNavigator样式是不够的,它设置的只是内容容器的样式,而头部Tab的样式还是需要单独设置Tab的样式!

程序代码

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx=" http://www.adobe.com/2006/mxml" layout="absolute" width="600" height="500" showFlexChrome="true" showStatusBar="false">
<mx:Style>
    
    TabNavigator{
        cornerRadius:0;
        tabWidth: 100;
        tabHeight: 30;
        borderStyle:solid;
        borderColor:red;
        selectedTabTextStyleName:  "selectedTab";
    }

    
     .selectedTab{
        fontSize:14;
        fontWeight:bold;
        color:blue;
    }
    
     Tab{
        cornerRadius:5;
        fillAlphas:1,1;
        fillColors:#FFFFFF,#EEEEEE;
        borderColor:red;
        textRollOverColor:#CCCCCC;
        themeColor:#3370ce;
    }
</mx:Style>
    <mx:TabNavigator x="119" y="102" width="405" height="236">
         <mx:Canvas label="Tab 1" width="100%" height="100%"></mx:Canvas>
        <mx:Canvas label="Tab 1" width="100%" height="100%"></mx:Canvas>
        <mx:Canvas label="Tab 1" width="100%" height="100%"></mx:Canvas>
         <mx:Canvas label="Tab 1" width="100%" height="100%"></mx:Canvas>
        
    </mx:TabNavigator>
    <mx:TabNavigator id="tn" width="500" height="300"  creationPolicy="auto"    >
    
         <mx:VBox id="vb1" label="Column Chart Module">
        
            <mx:Label id="l1" text="ColumnChartModule.swf"/>
            <mx:ModuleLoader url="ColumnChartModule.swf"/>
        
        </mx:VBox>
        
        <mx:VBox id="vb2" label="Pie Chart Module">
        
            <mx:Label id="l2" text="piehchartmodule.swf"/>
            <mx:ModuleLoader url="piechartmodule.swf"/>
        
        </mx:VBox>
        
         <mx:VBox id="vb3" label="Line Chart Module">
        
            <mx:Label id="l3" text="linehchartmodule.swf"/>
            <mx:ModuleLoader url="linechartmodule.swf"/>
        
        </mx:VBox>
    
    </mx:TabNavigator>
</mx:WindowedApplication>
From:
---------------------------------------------------
TabNavigator的一个效果:
<mx:Style>
        TabNavigator {
            backgroundColor: black;
            cornerRadius: 0;
            tabStyleName: "MyTabs";
            firstTabStyleName: "MyFirstTab";
            lastTabStyleName: "MyLastTab";
            selectedTabTextStyleName: "MySelectedTab";
        }
        .MyTabs {
            backgroundColor: black;
            cornerRadius: 0;
            color: black;
        }
        .MyFirstTab,
        .MyLastTab {
            backgroundColor: black;
            cornerRadius: 0;
            color: black;
            background-image:Embed('assets/longblue.png');
        }
        .MySelectedTab {
            backgroundColor: haloBlue;
            color: haloBlue;
            textRollOverColor: haloBlue;
            background-image:Embed('assets/longblue.png');
          
        }
    </mx:Style>
---------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white" viewSourceURL="srcview/index.html">

    <mx:XML id="model">
        <records>
            <record uuid="1" status="check" name="User 1" data="Data 1" />
            <record uuid="2" status="warning" name="User 2" data="Data 2" />
            <record uuid="3" status="warning" name="User 3" data="Data 3" />
            <record uuid="4" status="critical" name="User 4" data="Data 4" />
            <record uuid="5" status="check" name="User 5" data="Data 5" />
            <record uuid="6" status="check" name="User 6" data="Data 6" />
            <record uuid="7" status="warning" name="User 7" data="Data 7" />
            <record uuid="8" status="critical" name="User 8" data="Data 8" />
        </records>
    </mx:XML>

    <mx:Script>
        <![CDATA[
            []
            [(source="assets/bulletCheck.png")]
            private var BulletCheck:Class;

            []
            [(source="assets/bulletWarning.png")]
            private var BulletWarning:Class;

            []
            [(source="assets/bulletCritical.png")]
            private var BulletCritical:Class;

            private const CHECK:String = "check";
            private const WARNING:String = "warning";
            private const CRITICAL:String = "critical";
        ]]>
    </mx:Script>

    <mx:TabNavigator width="400" height="200">
        <mx:VBox label="Check" icon="{BulletCheck}">
            <mx:DataGrid id="gridCheck"
                    width="100%"
                    height="100%">
                <mx:columns>
                    <mx:DataGridColumn dataField="@name" />
                    <mx:DataGridColumn dataField="@data" />
                </mx:columns>
                <mx:dataProvider>
                    {model.record.(@status == CHECK)}
                </mx:dataProvider>
            </mx:DataGrid>
        </mx:VBox>

        <mx:VBox label="Warnings" icon="{BulletWarning}">
            <mx:DataGrid id="gridWarning"
                    width="100%"
                    height="100%">
                <mx:columns>
                    <mx:DataGridColumn dataField="@name" />
                    <mx:DataGridColumn dataField="@data" />
                </mx:columns>
                <mx:dataProvider>
                    {model.record.(@status == WARNING)}
                </mx:dataProvider>
            </mx:DataGrid>
        </mx:VBox>

        <mx:VBox label="Errors" icon="{BulletCritical}">
            <mx:DataGrid id="gridCritical"
                    width="100%"
                    height="100%">
                <mx:columns>
                    <mx:DataGridColumn dataField="@name" />
                    <mx:DataGridColumn dataField="@data" />
                </mx:columns>
                <mx:dataProvider>
                    {model.record.(@status == CRITICAL)}
                </mx:dataProvider>
            </mx:DataGrid>
        </mx:VBox>
    </mx:TabNavigator>

</mx:Application>
From:
http://blog.minidx.com/2008/07/23/1125.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要在后端实现用户角色的区分,例如在用户表中添加一个字段存储用户角色。 然后,在前端实现不同用户角色登陆后显示不同的 tabbar,可以按照以下步骤进行: 1. 在 App.js 中定义一个 state,用于存储当前用户的角色信息。 ```javascript import React, { useState } from 'react'; import { View } from 'react-native'; import TabNavigator from './TabNavigator'; export default function App() { const [userRole, setUserRole] = useState(''); return ( <View style={{ flex: 1 }}> <TabNavigator userRole={userRole} /> </View> ); } ``` 2. 在登陆成功后,通过后端接口获取用户角色信息,并将其设置到 state 中。 ```javascript function handleLogin() { // 登陆逻辑,成功后获取用户角色信息 const role = 'admin'; // 假设当前用户角色为管理员 setUserRole(role); } ``` 3. 在 TabNavigator.js 中根据用户角色显示不同的 tabbar。 ```javascript import React from 'react'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { Ionicons } from '@expo/vector-icons'; import HomeScreen from './HomeScreen'; import ProfileScreen from './ProfileScreen'; import AdminScreen from './AdminScreen'; const Tab = createBottomTabNavigator(); export default function TabNavigator({ userRole }) { return ( <Tab.Navigator> <Tab.Screen name="Home" component={HomeScreen} options={{ tabBarIcon: ({ color, size }) => ( <Ionicons name="home" color={color} size={size} /> ), }} /> <Tab.Screen name="Profile" component={ProfileScreen} options={{ tabBarIcon: ({ color, size }) => ( <Ionicons name="person" color={color} size={size} /> ), }} /> {userRole === 'admin' && ( <Tab.Screen name="Admin" component={AdminScreen} options={{ tabBarIcon: ({ color, size }) => ( <Ionicons name="settings" color={color} size={size} /> ), }} /> )} </Tab.Navigator> ); } ``` 在上面的代码中,如果用户角色为管理员,则会显示一个名为 "Admin" 的 tab,否则不会显示。你可以根据自己的需求来修改这个逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值