我通过设置每个项目的图像创建了一个简单的自定义标签栏,如下所示:
UITabBar *tabBar = self.tabBarController.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
[item0 setFinishedSelectedImage:[UIImage imageNamed:@"activity_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"activity.png"]];
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"agenda_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"agenda.png"]];
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"settings_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"settings.png"]];
Run Code Online (Sandbox Code Playgroud)
虽然这很好用,但我注意到我的tabbar下面有一个黑色的空白区域

我的图像高度为44像素,但我想我必须以某种方式改变我的标签栏的高度.
我在设置分隔符的drawable时遇到问题.我的style.xml看起来像这样:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="HCLTheme" parent="android:Theme.Holo.Light">
<item name="android:actionBarStyle">@style/HCLActionBarStyle</item>
<item name="actionBarStyle">@style/HCLActionBarStyle</item>
<item name="android:actionBarTabBarStyle">@style/HCLActionBarTabBarStyle</item>
<item name="android:actionBarTabStyle">@style/HCLActionBarTabStyle</item>
</style>
<style name="HCLActionBarStyle" parent="android:style/Widget.Holo.ActionBar">
<item name="android:background">@drawable/hcl_actionbar_drawable</item>
<item name="background">@drawable/hcl_actionbar_drawable</item>
<item name="android:titleTextStyle">@style/HCLActionBarTitle</item>
</style>
<style name="HCLActionBarTabBarStyle" parent="@android:style/Widget.Holo.ActionBar.TabBar">
<item name="android:showDividers">middle</item>
<item name="android:divider">@drawable/divider</item>
<item name="android:dividerPadding">0dp</item>
</style>
<style name="HCLActionBarTabStyle" parent="@android:style/Widget.Holo.ActionBar.TabView">
<item name="android:background">@drawable/action_bar_tab_style</item>
</style>
<style name="HCLActionBarTitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@android:color/white</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
在HCLActionBarTabBarStyle中,我将@ drawable/divider设置为制表符分隔符.这个drawable是一个9patch图像,一个垂直的黑色线条.
在我在xml中设置可绘制的分隔符之前我得到了正常的白色分隔符,如下所示:

在styles.xml中设置drawable之后我得到了这个:

因此,您可以看到分频器变得更宽,而不是9patch图像中的黑色垂直线.我甚至不确定分隔器的抽屉是什么?图片或图层列表,还是可以是颜色?事实上,我尝试了所有这3个但没有成功.
我知道还有其他关于这个问题的帖子,但它们似乎对我不起作用。当我的应用程序中的 uinavigationcontroller 推送特定视图时,我将视图旋转到横向模式并隐藏选项卡栏。但是,当标签栏隐藏而不是显示它后面的视图时,会显示一个空白区域。

为了解决这个问题,我按照其他关于这个问题的帖子的建议,在我的 viewDidLoad 方法中使用了以下代码行,但它没有解决它。
[self.view setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
Run Code Online (Sandbox Code Playgroud)
如果有人知道发生了什么,请帮忙。谢谢,
我有一个标签栏,我需要在标签之间放置一条垂直线作为分隔线,该怎么做?这是我如何使用我的标签栏:
new TabBar(
unselectedLabelColor: Color.fromRGBO(119, 119, 119, 1),
labelColor: Colors.black,
controller: controller,
tabs: <Tab>[
new Tab(text: "Girls"),
new Tab(text: "Hero"),
new Tab(text: "Open"),
]),
Run Code Online (Sandbox Code Playgroud)
我需要它是这样的:
我正在使用带有 SafeAreaView 的标签栏导航器。
如果我注释掉标签栏导航,父视图将覆盖整个屏幕。但是,当我添加标签栏时,它会在标签栏部分下显示一个小的白色视图。
const App = () => {
return (
<SafeAreaView style={styles.droidSafeArea}>
<View style={{ backgroundColor: "red", flex: 1 }}>
<TabNavigator key="MainTabNav" />
</View>
</SafeAreaView>
);
};
export default App;
const styles = StyleSheet.create({
droidSafeArea: {
flex: 1,
backgroundColor: "#2F3438",
}
});
Run Code Online (Sandbox Code Playgroud)
如何在 TabBar 顶部添加一条线/分隔符,以便在视图和 TabBar 之间添加某种分隔符?
我的屏幕底部有一个容器,它有一个 BottomNavigationBar。我希望容器获得我的背景颜色。即使在添加 CLipRRect 之后,它也没有得到纠正。我还尝试使容器透明,但它显示了一个错误,我无法为我的容器分配颜色并给它一个 boxDecoration。我希望多余的白色部分合并到我的背景中。
//编辑
Widget _bottomNavigationBar(int selectedIndex) => ClipRect(
child: Container(
height: 80,
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(Radius.circular(52.0)),
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.grey.withOpacity(0.3),
offset: const Offset(0.0, 0.0),
blurRadius: 52.0),
],
),
child: ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(52.0),
topRight: Radius.circular(52.0)),
child: BottomNavigationBar(
selectedItemColor: Color(0xFFFE524B),
unselectedItemColor: Color(0xFFFF8C3B),
onTap: (int index) => setState(() => _selectedIndex = index),
currentIndex: selectedIndex,
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(
Entypo.home,
size: 30,
),
title: Text('')),
BottomNavigationBarItem(
icon: Icon(
Entypo.game_controller,
size: 30,
),
title: Text('[![enter …Run Code Online (Sandbox Code Playgroud) 我的 VC 以stackViewAttached开头Align Bottom to Safe Area。
我有 tabBar,但一开始是隐藏的tabBar.isHidden = true。
稍后,当 tabBar 出现时,它会隐藏stackView
所以我需要在之后刷新约束的函数tabBar.isHidden = false
当我启动应用程序时,会正确tabBar.isHidden = false显示stackView。
尝试过每个功能,例如:stackView.needsUpdateConstraints() , updateConstraints() , setNeedsUpdateConstraints()没有成功。
现在我正在以编程方式更改底部,但是当我切换 tabBarIndex 并返回到更改了底部约束的那个索引时,它会检测到 tabBar 并在另一个视图(未附加约束)下提升 stackView 。就像是再次刷新了约束。我正在隐藏并显示此 stackView,并在屏幕上/屏幕外进行限制。
我需要在 tabBar.isHidden = false 之后刷新约束,但约束不会检测 tabBar 的外观。
正如我提到的,在 tabBar 之间切换可以解决问题,因此在切换后会执行一些代码来检测 tabBar。有人知道这段代码吗?我尝试调用方法 viewDidLayoutSubviews 和 viewWillLayoutSubviews 但没有成功......有什么建议吗?
上下文:我有当前的设计 - 显示在下面的屏幕截图中 - 我Tab静态实现了s,
问题:我们如何Tab使用来自服务器的动态值动态创建s?
例如,服务器发送超过 5Tab秒。
我当前的实现包含一个 AppBar,它支持一个TabBar带有标签的小部件列表
这是标签栏的代码片段:
bottom: TabBar(
labelPadding: EdgeInsets.symmetric(horizontal: 20),
indicatorColor: kDarkColor,
labelColor: kDarkColor,
indicatorWeight: 2,
unselectedLabelColor: Colors.black,
isScrollable: true,
tabs: [
Tab(child: Text('Timeline.mostPopularTab'.tr())),
Tab(child: Text('Timeline.menTab'.tr())),
Tab(child: Text('Timeline.womenTab'.tr())),
Tab(child: Text('Timeline.kidsTab'.tr())),
],
),
Run Code Online (Sandbox Code Playgroud) 我使用默认的底部在Xamarin.Forms.Shell应用程序上工作TabBar,我需要知道调整一些项目的TabBar 高度。
我已经找到一种方法来获得StatusBar 高度在两个平台上有,但我没有找到的一个解决方案TabBar。
是否可以?我只找到了关于在 Stack 上更改 TabBar 高度的请求...