zoukankan      html  css  js  c++  java
  • (转)Android 自定义标题栏(title栏)

    转:http://blog.csdn.net/jamin0107/article/details/6715678

    第一步,向实现自定义标题栏,需要在onCreate方法里这样写

     

        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  
            setContentView(R.layout.main);
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar);

     

     

    注意:

          requestWindowFeature要在setContentView之前

        etWindow().setFeatureInit最好在setContentView之后

     

    第二步,就是写好自己的布局文件,实现标题栏的自定义。

    不过我们会遇到一些问题,就是标题栏的高度不能自定义~下面就是解决办法~

    下面,我们看一下android title标题栏 在源码 framework中的XML文件

    screen_custom_title.xml

    <LinearLayout android:orientation="vertical" android:fitsSystemWindows="true">
    <FrameLayout android:id="@android:id/title_container" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:layout_width="match_parent" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:layout_height="?android:attr/windowTitleSize" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;style="?android:attr/windowTitleBackgroundStyle">
        </FrameLayout>
    <FrameLayout android:id="@android:id/content" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:layout_width="match_parent" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:layout_height="0dip" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:layout_weight="1" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:foregroundGravity="fill_horizontal|top" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:foreground="?android:attr/windowContentOverlay"/>
    </LinearLayout>

    screen_title.xml

    <LinearLayout android:orientation="vertical" android:fitsSystemWindows="true"><FrameLayout android:layout_width="match_parent" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:layout_height="?android:attr/windowTitleSize" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;style="?android:attr/windowTitleBackgroundStyle">
    <TextView android:id="@android:id/title" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; style="?android:attr/windowTitleStyle" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:background="@null" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:fadingEdge="horizontal" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:gravity="center_vertical" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:layout_width="match_parent" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:layout_height="match_parent"/>
    </FrameLayout>
    <FrameLayout android:id="@android:id/content" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; android:layout_width="match_parent" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; android:layout_height="0dip" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; android:layout_weight="1" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:foregroundGravity="fill_horizontal|top" 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:foreground="?android:attr/windowContentOverlay"/>
    </LinearLayout>

           既然是自定义标题,那我们就看screen_custom_title.xml,里面有一个title_container和一个content,组合成了标题栏,我们自定义标题所给出的view,都被content作为子view了,影响不了那个title_container和content,所以,任你怎么弄,它该留白的还是留白,你没招。
           看title_container有个style是这样的:

            style="?android:attr/windowTitleBackgroundStyle"
          

             content的foreground是这样的android:foreground="?android:attr/windowContentOverlay"

           我们可以自己写一个style

    <resources xmlns:android="http://schemas.android.com/apk/res/android">
    
    
    <style name="CustomWindowTitleBackground">
           <item name="android:background">#00cc00</item>
    </style>
    
    
    <style name="title_bar" parent="android:Theme">
         <item name="android:windowTitleSize">50dp</item>
         <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item>
    </style>
    </resources>

    加入到AndroidManifest

      <activity android:name=".CustomTitileBarActivity"  
                      android:label="@string/app_name" android:theme="@style/title_bar">  
                <intent-filter>  
                    <action android:name="android.intent.action.MAIN" />  
                    <category android:name="android.intent.category.LAUNCHER" />  
                </intent-filter>  
      </activity>  

     

    PS:做的略显粗糙,不过以能实现功能为主

  • 相关阅读:
    override CreateParams events in delphi
    .NET下获取网页的内容的封装类
    WAYOS三天重启硬件版PCB和程序已设计完成,如果需要的人多就发去工厂统一制作
    WAYOS策略路由专用工具——进程端口自动扫描导入工具
    打造最专业的三天重启工具,本人再对WAYOS智能重启进行全面升级
    WAYOS BCM 机器+授权,全淘宝最低价,全新机器仅258还包邮费
    BCM路由全智能固件升级软件tftp,一键刷路由及常用固件下载
    WAYOS PPPOE用户数据定时备份并上传到FTP,保证数据不会因为掉配置、挂机等而丢失
    WAYOS内置免拉黑终于突破技术大关完美成功,以后再也不需要独立的电脑来运行免拉黑了
    巧用EasyRadius计费策略设置灵的计费费率,保证帐目一目了然
  • 原文地址:https://www.cnblogs.com/wangle1001986/p/3863414.html
Copyright © 2011-2022 走看看