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


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


[java] view plain copy
  1. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
  2. setContentView(R.layout.main);
  3. getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.title_bar);

注意:

requestWindowFeature要在setContentView之前

getWindow().setFeatureInit最好在setContentView之后


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

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



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


screen_custom_title.xml

[html] view plain copy
  1. <LinearLayoutandroid:orientation="vertical"android:fitsSystemWindows="true">
  2. <FrameLayoutandroid:id="@android:id/title_container"
  3. android:layout_width="match_parent"
  4. android:layout_height="?android:attr/windowTitleSize"
  5. style="?android:attr/windowTitleBackgroundStyle">
  6. </FrameLayout>
  7. <FrameLayoutandroid:id="@android:id/content"
  8. android:layout_width="match_parent"
  9. android:layout_height="0dip"
  10. android:layout_weight="1"
  11. android:foregroundGravity="fill_horizontal|top"
  12. android:foreground="?android:attr/windowContentOverlay"/>
  13. </LinearLayout>

screen_title.xml

[html] view plain copy
  1. <LinearLayoutandroid:orientation="vertical"android:fitsSystemWindows="true">
  2. <FrameLayoutandroid:layout_width="match_parent"
  3. android:layout_height="?android:attr/windowTitleSize"
  4. style="?android:attr/windowTitleBackgroundStyle">
  5. <TextViewandroid:id="@android:id/title"
  6. style="?android:attr/windowTitleStyle"
  7. android:background="@null"
  8. android:fadingEdge="horizontal"
  9. android:gravity="center_vertical"
  10. android:layout_width="match_parent"
  11. android:layout_height="match_parent"/>
  12. </FrameLayout>
  13. <FrameLayoutandroid:id="@android:id/content"
  14. android:layout_width="match_parent"
  15. android:layout_height="0dip"
  16. android:layout_weight="1"
  17. android:foregroundGravity="fill_horizontal|top"
  18. android:foreground="?android:attr/windowContentOverlay"/>
  19. </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

[html] view plain copy
  1. <resourcesxmlns:android="http://schemas.android.com/apk/res/android">
  2. <stylename="CustomWindowTitleBackground">
  3. <itemname="android:background">#00cc00</item>
  4. </style>
  5. <stylename="test"parent="android:Theme">
  6. <itemname="android:windowTitleSize">50dp</item>
  7. <itemname="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item>
  8. </style>
  9. </resources>

加入到AndroidManifest


[html] view plain copy
  1. <activityandroid:name=".CustomTitileBarActivity"
  2. android:label="@string/app_name"android:theme="@style/title_bar">
  3. <intent-filter>
  4. <actionandroid:name="android.intent.action.MAIN"/>
  5. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  6. </intent-filter>
  7. </activity>






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


更多相关文章

  1. 十七、Android学习笔记_Android(安卓)使用 搜索框
  2. android Dialog去掉标题栏 和边框
  3. Android访问WCF服务(使用json实现参数传递)
  4. 多平台部署
  5. Android(安卓)中Layout实现点击水波纹特效
  6. Android(安卓)AsyncTask
  7. android shape 代码实现按钮背景
  8. [置顶] android 抽屉效果,内容GridView来实现单行滑动
  9. 浅谈Java中Collections.sort对List排序的两种方法

随机推荐

  1. Android通过AudioFocus机制对音频焦点进
  2. Android:Bitmap->Drawble->Byte[]
  3. 关于android studio出现Gradle sync fail
  4. Maven For Android插件安装
  5. android 打开移动数据流程
  6. Android:giraffeplayer2 ConnectExceptio
  7. 设置环境变量
  8. android中实现截屏的三种思路
  9. android常见错误-Installation error: IN
  10. 2011.06.21——— android GridView的拖