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:做的略显粗糙,不过以能实现功能为主

  • 相关阅读:
    sqlhelper使用指南
    大三学长带我学习JAVA。作业1. 第1讲.Java.SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行 大三学长带我学习JAVA。作业1.
    pku1201 Intervals
    hdu 1364 king
    pku 3268 Silver Cow Party
    pku 3169 Layout
    hdu 2680 Choose the best route
    hdu 2983
    pku 1716 Integer Intervals
    pku 2387 Til the Cows Come Home
  • 原文地址:https://www.cnblogs.com/wangle1001986/p/3863414.html
Copyright © 2011-2022 走看看