欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

android中自定义标题栏,并在标题栏中添加按钮

程序员文章站 2024-02-05 11:57:10
...

这是刚开始在模拟器上运行的结果
android中自定义标题栏,并在标题栏中添加按钮
第一步:在layout中新建一个布局文件:setting_top.xml
其中代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageButton
    android:id="@+id/setting_return"
    android:layout_width="30dp"
    android:layout_height="30dp"

    android:background="#00000000"
    android:layout_centerVertical="true"
    android:layout_alignParentLeft="true"
    android:src="@mipmap/mrkj_go_to_5" />
<TextView android:id="@+id/toptitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:layout_centerVertical="true"
    android:textSize="22dp"
    android:text="设置" />

</RelativeLayout>

android中自定义标题栏,并在标题栏中添加按钮
第二步:在要更改标题栏的activity文件中添加如下代码

 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // 注意顺序
 getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.setting_top);//注意顺序

如图所示

android中自定义标题栏,并在标题栏中添加按钮
此时点击运行后会出现错误:

Caused by: android.util.AndroidRuntimeException: You cannot combine custom titles with other title features

android中自定义标题栏,并在标题栏中添加按钮
原因是: android4.0以上已经默认设置了title。
解决方法: 自定义标题栏
(1)在styles.xml文件中添加如下代码,自定义一个名为mystyle主题

<style name="mystyle" parent="android:Theme">
    <item name="android:windowTitleSize">50dp</item>
    <item name="android:windowTitleBackgroundStyle">@style/StatusBarBackground</item>
</style>
<style name="StatusBarBackground">
<item name="android:background">@color/my_background</item>
</style>

android中自定义标题栏,并在标题栏中添加按钮
android中自定义标题栏,并在标题栏中添加按钮
(2)在AndroidManifest.xml文件中引用新建的mystyle如图所示
android中自定义标题栏,并在标题栏中添加按钮
运行还是存在错误:

Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

android中自定义标题栏,并在标题栏中添加按钮

异常的意思是:你需要使用一个 theme.appcompat 主题(或后代)与此活动
因为我的activity是继承AppCompatActivity
android中自定义标题栏,并在标题栏中添加按钮
解决方法
AppCompatActivity改成Activity 如图所示
android中自定义标题栏,并在标题栏中添加按钮
运行结果如图所示
android中自定义标题栏,并在标题栏中添加按钮