Android 自定义标题栏(title栏)

近日

需要在android的标题栏上添加按钮,所以对android的标题栏进行了一下简单的研究~


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


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

注意:

requestWindowFeature要在setContentView之前

getWindow().setFeatureInit最好在setContentView之后


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

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



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


screen_custom_title.xml

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

screen_title.xml

<LinearLayout android:orientation="vertical" android:fitsSystemWindows="true">
−
<FrameLayout android:layout_width="match_parent" 
             android:layout_height="?android:attr/windowTitleSize" 
             style="?android:attr/windowTitleBackgroundStyle">
<TextView android:id="@android:id/title" 
          style="?android:attr/windowTitleStyle" 
          android:background="@null" 
          android:fadingEdge="horizontal" 
          android:gravity="center_vertical" 
          android:layout_width="match_parent" 
          android:layout_height="match_parent"/>
</FrameLayout>
<FrameLayout android:id="@android:id/content" 
             android:layout_width="match_parent" 
             android:layout_height="0dip" 
             android:layout_weight="1" 
             android:foregroundGravity="fill_horizontal|top" 
             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="test" 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:做的略显粗糙,不过以能实现功能为主~~






  • 16
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值