方法一:隱藏
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比勐臘網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式勐臘網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋勐臘地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
Android中布局內(nèi)容被底部系統(tǒng)導(dǎo)航欄遮擋
方法二:內(nèi)容上移
Android手機(jī)底部NavigationBar擋住界面的解決方法
在 Manifest.xml 文件中設(shè)置 Activity 的屬性
Android布局界面隱藏頂部導(dǎo)航欄
Android隱藏和顯示虛擬導(dǎo)航欄
Android 獲取手機(jī)存儲(chǔ)總大小,系統(tǒng)占用空間
Android 獲取屏幕寬度和高度的幾種方法
Android 獲取電池相關(guān)信息
Android電量計(jì)重要的類及函數(shù)介紹
安卓5.0后獲取所有運(yùn)行的進(jìn)程信息
Android獲取內(nèi)存(RAM)大小信息
android 幾種殺進(jìn)程的方式
Android開發(fā)中 獲取App緩存大小以及清除緩存
Looper.getMainLooper()使用誤區(qū)
Android中通過資源文件獲取drawable的幾種方法
Fragment向Activity傳遞值
注意:
這是布局:
** android:clipChildren="false"**的意思是孩子的寬高不必受父親的約束,即可大過父布局,父親以及父親的父親都必須申明才可以,中間Imageview的android:layout_gravity="bottom"表示當(dāng)高度超過父布局時(shí),底部對(duì)齊,于是就達(dá)到上圖的效果。
在某些情況下,我們可能需要使底部tabbar的中間按鈕突出,即類似于如下的效果:
在android要實(shí)現(xiàn)該效果,十分簡單,只需要在按鈕的父布局將android:clipChildren屬性設(shè)置為false:
并設(shè)置按鈕的layout_gravity為bottom:
示例布局文件如下:
其中android:clipChildren屬性的作用為 是否限制子View不超過父布局,默認(rèn)情況下是為true。當(dāng)該屬性為true時(shí),子View超出父布局的部分會(huì)被裁剪。 因此,將該屬性設(shè)置為false,父布局不再裁剪子View超出父布局的部分,就能實(shí)現(xiàn)突出按鈕的效果了。
咳咳,答應(yīng)過年增加新功能的,沒想到拖到現(xiàn)在,延遲了一個(gè)來月,尷尬,尷尬
那個(gè),我們先忽略這尷尬的事情吧,進(jìn)入正題才是最重要滴
老規(guī)矩,先上效果圖:
跟原來的圖有個(gè)很明顯的區(qū)別,你們也一定都發(fā)現(xiàn)了,對(duì)不對(duì)。那么顯眼的小紅點(diǎn),一定都看到了吧。
當(dāng)然除了這個(gè),還增加了一項(xiàng)功能,雖然不是很明顯,但相信也有小伙伴發(fā)現(xiàn)了吧,截圖的這倆手機(jī)屏幕明顯大小不同,但是底部導(dǎo)航欄的大小還是相差不大滴。
是的,你們沒有看多,這次不僅增加了小紅點(diǎn)功能,還增加了底部導(dǎo)航欄的適配,你沒有聽錯(cuò),以后底部導(dǎo)航欄也不用那些dp、sp了,都按照UI妹子們標(biāo)注的px來就可以了,再也不用為了底部導(dǎo)航欄去跟UI妹子解釋啥叫dp了。
好了,效果圖展示完了,現(xiàn)在該進(jìn)入枯燥的使用介紹了。
由于這次改動(dòng)有點(diǎn)大,所以,先介紹下上個(gè)穩(wěn)定版本的用法,到底是用最新的,還是用原來的,就看各位小伙伴的意愿了
上個(gè)穩(wěn)定版本是1.1.3的,引用方式如下
compile 'com.hjm:BottomTabBar:1.1.3'
具體用法如下(備注都加好了,我也就不多廢話了):
最新版本是1.2.2的,引用方式如下
compile 'com.hjm:BottomTabBar:1.2.2'
其實(shí)1.2.0與1.1.3區(qū)別并不大,只有4點(diǎn)改動(dòng):
現(xiàn)在默認(rèn)的,分割線高度都是設(shè)置的1個(gè)像素。這里以后也固定都用這個(gè)默認(rèn)的高度了,不再對(duì)外提供修改的方法。
這就是新增加的適配了,多的也不說了,你們都懂的
標(biāo)準(zhǔn)尺寸,就是UI妹子給你提供的效果圖的屏幕尺寸,只要在init()方法里添加上標(biāo)準(zhǔn)尺寸,你就可以放肆的使用px了
這個(gè)方法就是控制小紅點(diǎn)顯示的方法了,index就是需要顯示或者隱藏小紅點(diǎn)的TabItem,isShow是一個(gè)boolean類型的參數(shù),他是控制小紅點(diǎn)是否顯示的,如果為true,就會(huì)顯示小紅點(diǎn);如果為false,就會(huì)隱藏小紅點(diǎn)
1.2.2版本新增了兩個(gè)方法
介紹到這里,超簡單的底部導(dǎo)航欄,第二階段就可以告一段落了。以后還會(huì)持續(xù)優(yōu)化,完善的。
第三階段我打算封裝一下有中間凸起的底部導(dǎo)航欄,這個(gè)功能我本地已經(jīng)做了,但是封裝進(jìn)去的時(shí)候,封裝的不理想,這次就沒有上線,留作下次了。
最后,再上個(gè) GitHub 地址
一共兩種實(shí)現(xiàn)方式:
方式一:java代碼實(shí)現(xiàn)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
/**
* 參數(shù)1:組的id
* 參數(shù)2:菜單的id
* 參數(shù)3:排列的順序
* 參數(shù)4:顯示菜單的文本
*/
menu.add(0, 0, 0, "你好");
menu.add(1, 1, 1, "不好");
return super.onCreateOptionsMenu(menu);
}
/**菜單的點(diǎn)擊事件*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case 0:
Toast.makeText(this, "你選擇你好", Toast.LENGTH_LONG).show();
break;
case 1:
Toast.makeText(this, "你選擇不好", Toast.LENGTH_LONG).show();
break;
}
}
方式二:xml形式的菜單
步驟一:在res/menu目錄下新建xml文件
menu xmlns:android=""
xmlns:tools=""
tools:context="com.lifei.menu.MainActivity"
item
android:id="@+id/delete_menu_item"
android:orderInCategory="20"
android:title="@string/deletemunu"/
item
android:id="@+id/add_menu_item"
android:orderInCategory="19"
android:title="@string/addmunu"
menu
item
android:id="@+id/add_user_item"
android:orderInCategory="30"
android:title="@string/adduser"/
item
android:id="@+id/add_phone_item"
android:orderInCategory="31"
android:showAsAction="never"
android:title="@string/addhpone"/
/menu
/item
/menu
步驟二:在activity中
@Override
public boolean onCreateOptionsMenu(Menu menu) {
/**xml形式的menu菜單*/
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
點(diǎn)擊事件與方式一是一樣的