• 熱門專題

分別用ToolBar和自定義導航欄實現沉浸式狀態欄

作者邵天罡:熊|_n78主题,我-  發布日期|_248彩票:2016-12-26 20:23:29
Tag標簽--南滨是哪个省的:別用  狀態  
  • 一-|花语梦之恋人、ToolBar

    1_||天津热线adsl查询、在build.gradle中添加依賴_诺氟沙星副作用,例如-_2020彩票:

    compile 'com.android.support:appcompat-v7:23.4.0'

    2|_-重庆历任公安局长、去掉應用的ActionBar_长江流域地图。可以是修改主題theme為“NoActionBar”__永胜国际app,例如|反间谍工作的主管单位是:

    <style name='AppTheme' parent='Theme.AppCompat.Light.NoActionBar'>
    

    或者不修改主題為'NoActionBar'|-_香港离深圳有多远,而在主題的style下_|248彩票邀请码,添加|-_掌上彩票专业版:

        <item name='windowNoTitle'>true</item>
        <item name='windowActionBar'>false</item>

    第二個屬性代表是否用ActionBar代替TitleBar_-|众赢彩票平台。

    其實_-|金庸群侠传之苍龙逐日攻略,剛學的時候||360专家杀号双色球澳客,感覺很納悶--379虎嗅网,怎麼又多了個TitleBar___168彩票提不出款?後來查了很久才發現|-|优游ub8注册,3.0以前_|_李驰的博客,狀態欄下麵的是標題欄(隻能顯示標題等少量信息)|_花家姑娘,3.0以後就變成了應用欄|订房电话,也就是ActionBar__-长虹小志玲。

    另外--绍兴特色菜,我測試的時候--无主之地2发型不好的日子,activity是繼承於AppCompatActivity||易彩堂合法吗,主題是AppCompat類型的--|苏菲的日记。這種情況下-众赢彩票平台安全吗,必須要像上麵那樣寫才有效果_-|和讯基金净值,少寫或值不同的話_鹿氏断食法,要麼沒效果---索爱手机维修,要麼報錯||_手机qq 2009。

    最後|_易彩快3,上麵兩個屬性的說明可在android.R.attr這個類中查看_|酷毕犬舍。

    3-花语梦之恋人、在xml中為ToolBar添加屬性

        android:fitsSystemWindows='true'
        android:minHeight='?attr/actionBarSize'

    fitsSystemWindows是ToolBar實現沉浸式狀態欄的關鍵||-永盛彩票网怎么注册,其大概情況是-_-吉林移动话费详单查询,如果設為true__|222彩票安卓,就會調整這個view去留一些空間給係統窗口18150期双色球开奖结果,如果不設置或設為false-||永盛彩钢板钢构怎么样,ToolBar就會和狀態欄重疊在一起_|北仑中学。

    而第二個屬性中_--汤唯在韩国视频,它的值全寫是'?android:attr/actionBarSize'--众赢计划,其意思是引用當前主題中的actionBarSize這個屬性||雅马哈r6报价。更多相關說明可查看官方文檔中Accessing Resources的部分|_|198总彩代。

    上麵兩個屬性可在android.view.View這個類中查看|_2019管家婆马报图今晚资料。

    4|_前田敦子毕业、在java中添加判斷sdk版本的代碼並在用戶的係統是4.4及以上時設置狀態欄為透明

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            }

    無論是ToolBar-_2019年每期正版四不像,還是自定義導航欄|||男子雨中殴打怀孕妻子,這個操作都是實現沉浸式狀態欄的關鍵_-18彩彩票网站。

    因為設置狀態欄為透明的這個屬性_|-古典舞基本功,要4.4以上才能使用-178娱乐平台怎么玩,所以4.4以下的係統是不能夠實現沉浸式狀態欄的|_海比网。而在4.4到5.0的係統中_||现任国家领导人排名,狀態欄是全透明的--yidianse,也就是它的顏色會跟你的ToolBar和自定義導航欄的顏色一樣-__苏州园林卡景点。而在5.0以上的係統中||-7k7k奥拉星游戏,則是半透明的-卓易彩票苹果版,也就看起來會比較深暗-||开个植物店。

    而我在6.0的係統上測試時-_钟秀全,發現這一步沒設置和設置了的--永盛国际彩票靠谱吗,從效果上看||锦州有线宽带,區別就是沒設置時狀態欄顏色淺一點--青海西宁特产,而且ToolBar的padding top為0__易富彩票,而設置了的顏色就深一點--_泰民我们结婚了停拍,padding top為狀態欄的高度_移动彩票11086是正规网站吗。具體有什麼影響-|昆明三对夫妻群p,還不清楚__248彩票是正规网站嘛。但這會讓自定義導航的外觀變形--_汤镇宗老婆张丽霞,它會增加狀態欄的高度--|长沙王府井影城,但又沒有讓這部分與狀態欄重疊|_青岛生活在线直播,就導致效果變形-|雯雅婷漫画全集。

    5-金华初一女生、最後在java中添加

    setSupportActionBar(mToolbar);

    ToolBar的布局代碼:

    <?xml version='1.0' encoding='utf-8'?>
    <android.support.v7.widget.Toolbar
        xmlns:android='http://schemas.android.com/apk/res/android'
        xmlns:app='http://schemas.android.com/apk/res-auto'
        android:id='@+id/tool_bar'
        android:layout_width='match_parent'
        android:layout_height='wrap_content'
        android:background='@color/colorPrimary'
        android:elevation='4dp'
        android:fitsSystemWindows='true'
        android:minHeight='?android:attr/actionBarSize'
        app:title='ToolBar'
        app:subtitle='toolbar'/>

     效果圖(Android 6.0)-脉动测速:

    二||-2015年世界gdp排名、自定義導航欄TopBar

    1|-阿列克斯 加西亚、設置窗口為無標題||1分快3怎么玩,上麵第2步中的兩個方法都可以實現-预感的意思,或者是在java中添加如下代碼-||256买彩票安卓版2016:

            requestWindowFeature(Window.FEATURE_NO_TITLE);
    

    注意在添加這句代碼時|-2010江苏数学高考试卷,確保是在加載布局內容之前|_众彩网双色球专家频道,也就是onCreate的setContentView之前_|_可口可乐兑奖。

    另外-_寂寞先生 刘悦,我發現如果該activity是繼承AppCompatActivity的話-郭美美欠赌债,隻寫上麵的這句代碼是沒有變化的__-隋唐大运河开凿顺序,顯示的還是ActionBar|__竹炭产地。但如果是繼承FragmentActivity的話--038彩票官方版,就有效果__-陈晓锐,也就說上麵第2步中的第二個方法-|长青学校,隻添加其中任意一個屬性都是可以的_--1号娱乐平台正规吗?。至於是什麼原因|_长江流域地形图,我還沒弄清楚_青花瓷琵琶简谱。

    2||-香港大学集体欺凌、同上麵第4步_-|重庆ume官网,判斷係統版本並按需設置狀態欄為透明

    3-|总决赛热火vs雷霆、獲取狀態欄的高度

        protected int getStatusHeight() {
            try {
                Class<?> c = Class.forName('com.android.internal.R$dimen'); // 獲得與字符串對應的Class對象
                Object object = c.newInstance(); // 創建這個Class的實例對象
                Field field = c.getField('status_bar_height'); // 拿到字符串對應的變量
                int x = Integer.parseInt(field.get(object).toString()); // 通過這個實例對象拿到這個變量的值__168彩票网怎么样,再轉換類型-|-姿姿堂,最後轉為整型--_赢彩彩票提现会到账吗,變為一個資源id
                return getResources().getDimensionPixelSize(x);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return 0;
        }

    這部分代碼是利用Java的反射機製來實現的_|中国青梅产地,因為這個internal包默認會被sdk/platforms/android-version中的android.jar給移除掉|_优信彩票快3,所以無法直接調用或查看這個包中的類_花样滑冰鞋。如果要使用的話-|中兴彩票官网,可以借助這個開源項目https://github.com/anggrayudi/android-hidden-api||_石狮海博会。

    4-|王晗祥康快车、獲取自定義TopBar的高度並修改布局參數

        protected void setStatusBar() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                final ViewGroup viewGroup = (ViewGroup) findViewById(R.id.top_bar);
                final int statusHeight = getStatusHeight();
                viewGroup.post(new Runnable() {
                    @Override
                    public void run() {
                        int topBarHeight = viewGroup.getHeight();
                        LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) viewGroup.getLayoutParams();
                        layoutParams.height = statusHeight + topBarHeight;
                        viewGroup.setLayoutParams(layoutParams);
                    }
                });
            }
        }

    因為在include這個TopBar的布局文件中--双升单机版,其父布局是LinearLayout-网上订票取票时间限制,而TopBar的父布局是RelativeLayout|_优彩彩票骗局揭秘,所以這裏先要轉成ViewGroup_|-金士顿u盘恢复工具,等getLayoutParams時|--晋城五个人图片,再轉成LinearLayout.LayoutParams||易赢在线官网。

    TopBar的布局-_盈彩网计划:

    <?xml version='1.0' encoding='utf-8'?>
    <RelativeLayout xmlns:android='http://schemas.android.com/apk/res/android'
        android:id='@+id/top_bar'
        android:layout_width='match_parent'
        android:layout_height='49dp'
        android:background='@color/colorPrimary'
        android:gravity='bottom'>
        
        <RelativeLayout
            android:layout_width='match_parent'
            android:layout_height='49dp'>
    
            <TextView
                android:layout_width='wrap_content'
                android:layout_height='wrap_content'
                android:layout_centerInParent='true'
                android:text='@string/app_name'
                android:textSize='24sp'
                android:textColor='#ffffff'/>
    
        </RelativeLayout>
    
    </RelativeLayout>

    因為這個布局的高度會在代碼中動態地修改_-_高仿古画,即49dp加上狀態欄的高度_qq2011版下载,所以隻有一個層級的結構的話-__陆贞身世,那導航欄的內容就會往上偏__-合肥市工商局年检。所以要嵌套多一層來維持導航欄的高度--惠蒙网qig6,同時在最外層的布局中|易经讲解11位手机号,添加android:gravity='bottom'這個屬性來保證導航欄不往上偏-|性价比较高的笔记本电脑。

    效果圖(Android 6.0)-南庄四中ed2k:

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯係方式
本站內容來自於互聯網,僅供用於網絡技術學習,學習中請遵循相關法律法規
万喜彩票大发彩票全民彩票E乐彩幸运蛋蛋秒速快3

免责声明: 本站资料及图片来源互联网文章,本网不承担任何由内容信息所引起的争议和法律责任。所有作品版权归原创作者所有,与本站立场无关,如用户分享不慎侵犯了您的权益,请联系我们告知,我们将做删除处理!