android中自定义标题栏,并在标题栏中添加按钮
程序员文章站
2024-02-05 11:57:10
...
这是刚开始在模拟器上运行的结果
第一步:在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>
第二步:在要更改标题栏的activity文件中添加如下代码
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // 注意顺序
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.setting_top);//注意顺序
如图所示
此时点击运行后会出现错误:
Caused by: android.util.AndroidRuntimeException: You cannot combine custom titles with other title features
原因是: 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>
(2)在AndroidManifest.xml文件中引用新建的mystyle如图所示
运行还是存在错误:
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
异常的意思是:你需要使用一个 theme.appcompat 主题(或后代)与此活动
因为我的activity是继承AppCompatActivity
解决方法
将AppCompatActivity改成Activity 如图所示
运行结果如图所示
上一篇: Base64加密原理
下一篇: JavaFx 可拖拽滚动面板