自定义bottom tab + title bar

最近在研究自定义android的tab样式,网上很多教程。综合看了一下,觉得这篇文章介绍得不错:http://blog.lxbiao.com/2010/10/05/%E5%9C%A8android%E4%B8%8A%E5%AE%9E%E7%8E%B0iphone%E9%A3%8E%E6%A0%BC-bottom-tab-title-bar/


不过按照步骤做下去。发现几个需要注意的地方:

1. 自定义title中的组件和布局 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal">
  <TextView
   android:id="@+id/headerTitleTxtVw"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textColor="@android:color/white"
  >
  </TextView>
</LinearLayout>


这里说的这个文件其实是MainActivity 的 R.layout.custom_titlebar,需要把以上代码保存到layout文件夹下,

命名:custom_titlebar.xml


2. <style name="customWindowTitleBackground" parent="@style/WindowTitleBackground">

原文中关于style中的parent定义:android:WindowTitleBackground,在android2.2中已经不可用,

原因参考这个帖子:

http://topic.csdn.net/u/20110811/13/54b9e7e2-055e-4d37-b3a9-857ddefad805.html

jasonborne:“这个资源项在 Android平台的源码里面是private属性的。private属性的资源,

编译时也会被转换成一个整型常量,但跟public属性的资源不同的是,每次编译

得到的整型值是不一样的。所以,如果在App里面继承这样的private属性资源,可能会导致的一个问题是,

在不同的终端平台上,得到的结果是不一样的。这是之前版本sdk tools里的一个bug:

允许直接继承private属性的资源。

新版的sdk tools已经修复了这个bug,所以会报资源找不到。

处理的方式2种:1)降SDK版本 到r6以前;

2)找到那个private属性的资源源码,复制到工程里面。SDK开发小组的建议是第2种。


所以修改了style:

<style name="customWindowTitleBackground" 

parent="@style/WindowTitleBackground">
<item name="android:background">@drawable/custom_title_shape

</item>
</style>

<style name="WindowTitleBackground">
<item name="android:background">@android:drawable/title_bar</item>
</style>

效果图:



在uni-app中,你可以通过以下步骤来实现自定义底部tabbar: 1. 在main.js文件中添加以下代码段,以解决点击两次才能选择icon的问题: ``` Vue.mixin({ methods: { setTabBarIndex(index) { if (typeof this.$mp.page.getTabBar === 'function' && this.$mp.page.getTabBar()) { this.$mp.page.getTabBar().setData({ selected: index }) } } } }) ``` 2. 在index.wxss文件中重新定义tabbar的样式,包括背景、高度、字体大小等。以下是一个例子: ```css .tab-bar { position: fixed; bottom: 0; left: 0; right: 0; display: flex; box-shadow: 0px -2px 10px 0px rgba(0,0,0,0.05); box-sizing: content-box; } .tab-bar-item { flex: auto; text-align: center; display: flex; justify-content: center; align-items: center; flex-direction: column; background: #fff; height: 120rpx; } /* 自定义样式 */ .tab-bar-item.diy { margin-top: 0!important; background: transparent; position: relative; flex: inherit; width: 134rpx; } .tab-bar-item image { width: 48rpx; height: 48rpx; overflow: initial; } .tab-bar-item view { font-size: 24rpx; } .tab-bar-item image.diy { position: absolute; width: 134rpx; height: 140rpx; bottom: 25.6%; z-index: 100; } .tab-bar-item view.diy { margin-top: 90rpx; background: #fff; width: 100%; height: 100%; padding-top: 58rpx; z-index: 99; } ``` 通过以上步骤,你可以在uni-app中实现自定义底部tabbar。使用以上的代码段和样式定义,你可以根据需求自定义底部tabbar的样式和交互效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [uni-app-tabbar:uni-app底部初步实现(不支持小程序)](https://download.csdn.net/download/weixin_42172572/15923240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [uni-app自定义底部tabbar](https://blog.csdn.net/Janent168/article/details/129809136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值