近日

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






更多相关文章

  1. Android中横竖屏、全屏、无标题设置
  2. 【Android进阶学习】实现没有标题栏的窗口和全屏显示
  3. android:theme="@android:style/Theme.Light.NoTitleBar.Fullscr
  4. Android(安卓)UI开发第二篇——多级列表(ExpandableListView)
  5. android 流量统计实现思路
  6. Android(安卓)用MediaCodec实现视频硬解码
  7. Android:只读EditText内容可滚动(禁止输入法)的实现
  8. Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
  9. android:theme="@android:style/Theme.Light.NoTitleBar.Fullscr

随机推荐

  1. Android(安卓)GPS 定位的实现(1)
  2. Android20_广播机制(一)
  3. android stuido的aar文件怎么使用
  4. Android Recovery
  5. Android——AndroidStudio配置NDK步骤
  6. android 语言定制
  7. TextView中ellipsize属性
  8. android点滴(23)之android监听应用卸载
  9. Android(安卓)Studio 怎么添加使用第三方
  10. Android(安卓)ImageView的ScaleType属性