Android(安卓)自定义标题栏(title栏)
16lz
2021-12-04
近日
需要在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文件
<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:做的略显粗糙,不过以能实现功能为主~~
更多相关文章
- Android中横竖屏、全屏、无标题设置
- 【Android进阶学习】实现没有标题栏的窗口和全屏显示
- android:theme="@android:style/Theme.Light.NoTitleBar.Fullscr
- Android(安卓)UI开发第二篇——多级列表(ExpandableListView)
- android 流量统计实现思路
- Android(安卓)用MediaCodec实现视频硬解码
- Android:只读EditText内容可滚动(禁止输入法)的实现
- Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
- android:theme="@android:style/Theme.Light.NoTitleBar.Fullscr