編輯:關於Android編程
在 Module 下的 build.gradle 中,加上下面這句:
compile 'com.github.youngkaaa:navigation-bottom:1.0.0'
android:title : 這是- 標簽中默認必須要寫的參數,暫時沒用到,可以在類 BottomMenuItem 中通過 getTitle()拿到當前 tab 的 title app:nb_tabActiveResId : 為當前 item(即當前 tab)設置當其選中時的圖片 id。 app:nb_tabInActiveResId : 為當前 item(即當前 tab)設置當其未選中時的圖片 id。 app:nb_insetLeft : 設置當前 Item(即當前 tab)的背景圖片距離左邊緣的距離,具體下面有圖解 app:nb_insetTop : 設置當前 Item(即當前 tab)的背景圖片距離上邊緣的距離,具體下面有圖解 app:nb_insetRight : 設置當前 Item(即當前 tab)的背景圖片距離右邊緣的距離,具體下面有圖解 app:nb_insetBottom : 設置當前 Item(即當前 tab)的背景圖片距離下邊緣的距離,具體下面有圖解
1) 默認內部的 insetLeft,insetRight,insetTop,insetBottom 默認是 12dp。當你設置了 app:nb_insetLeft 、 app:nb_insetTop 、app:nb_insetRight、nb_insetBottom app:nb_insetBottom 時,便以設置的屬性大小為准,當沒有設置時,以默認值 12dp 為准。 這樣的話,當你設置了圖標之後,發現有個別圖標和其他不同大小,可以通過以上四個屬性來微調指定圖標大小,以達到整體一致的目的。 2) 當你設置的 insetLeft 和 insetRight 之和大於一個 Tab 的寬度時,會拋出異常:IllegalArgumentException (xml attribute of "app:insetLeft" or "app:insetRight" is too large!) 3) insetTop 和 insetBottom 同理
圖中 :A、B、C、D 分別對應 insetLeft、nb_insetTop、nb_insetRight、nb_insetBottom (圖臨時畫的,不好看請見諒)
app:nb_xmlResource : 為 NavigationBottom 設置 menu 文件資源,即上面定義的 menu 資源 id app:nb_defaultIndex : 為 NavigationBottom 設置初始選中的是哪一個 tab。傳入 index 即可,index 類似於數組,從 0 開始。不設置該屬性時,默認為 0 app:nb_scrollDuration : 設置當 NavigationBottom 隱藏所需的時間。即可以設置其下降隱藏的速度。不設置該屬性時,默認為 500ms
MyNavigationBottom 標簽中的 layout_width 最好為 match_parent。當為具體大小時,會拋出異常 : IllegalArgumentException (NavigationBottom's width must be match_parent,which couldn't less than screenSize) 當為 wrap_content 時,內部 onMeasure()中會自動將其調整為 match_parent。 而對於 layout_height 請不要設置為 match_parent ,設置為具體的數值,比如 48dp
1) 在 xml 中定義之後,在代碼中找到它: navigationBottom = (MyNavigationBottom) findViewById(R.id.navigationBtn1); 2) 然後你可以設置監聽事件: navigationBottom.setOnTabListener(new OnTabSelectListener() { @Override public void onTabSelected(int index, View view) { Log.d("kklog", "######onTabSelected index=====>" + index + "######"); Toast.makeText(MainActivity.this, index + "", Toast.LENGTH_SHORT).show(); } }); 3) 當然,還有隱藏的方法: navigationBottom.hide(); 4) 同理,還有顯示的方法: navigationBottom.show(); 5) 最後,當你需要知道當前選中的是哪一個 tab 時,可以這樣做: navigationBottom.getSelectedIndex(); 6) 當你想要和 RecyclerView 產生關聯時,我的做法是:重寫 setOnTouchListener()方法,然後監聽 ACTION_MOVE, 並執行對應操作,我的代碼如下,僅供參考: recyclerView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { x= (int) motionEvent.getX(); y= (int) motionEvent.getY(); switch (motionEvent.getAction()){ case MotionEvent.ACTION_MOVE: int deltaY=y-lastY; if(deltaY>=0){ //down navigationBottom.show(); }else{ //up navigationBottom.hide(); } break; } lastX=x; lastY=y; return false; } });
這段時間將加上 Layoutbehavior,讓滑動更加舒服。敬請期待!
快三個月了沒寫博客了,因為工作調動,很多經驗、心得都沒有時間記錄下來。現在時間稍微充裕了點,我會盡量抽時間將之前想寫而沒寫的東西補上。進入正題。去年某個時候,我偶然看到一
說到 NDK 開發,其實是為了有些時候為了項目需求需要調用底層的一些 C/C++ 的一些東西;另外就是為了效率更加高些。谷歌主力推動 Android Studio 這個是
View類是android中非常重要的一個類.view是應用程序界面的直觀體現,我們看到的應用程序界面就可以看作是View(視圖)組成的.那麼我們應用程序的界面是怎麼創建
前言:在日常的Android開發中會經常和控件打交道,有時Android提供的控件未必能滿足業務的需求,這個時候就需要我們實現自定義一些控件,今天先大致了解一下自定義控件
前言在前2篇文章中,我們都說到著色器,且在第二篇中正式說到,這著色器只能