安卓APP开发之自定义标题栏

时间:2024-05-19 16:25:25

    对于新手,要自定义标题栏也是个坑来的,自己摸索了很久,总算有了点模样出来了。

    先看图片

安卓APP开发之自定义标题栏安卓APP开发之自定义标题栏

第一张是改之前的标题栏,第二张是改之后的,下面详细说明修改标题栏涉及到的关键点

1,AndroidMainifest.xml

    必须更改:5颗星

    修改android:theme,创建工程时,加载了默认的主题,如果要自定义标题栏,就要自己定义主题文件

<application android:label="@string/app_name"
    android:icon="@drawable/logobluetooth"
    android:theme="@style/TileTheme">
    <activity android:name=".FirstActivity"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <service android:name=".BluetoothLeService" android:enabled="true"/>
</application>

TIleTeme放在 .xml文件里面

mythmythem.xml

<?xml version="1.0" encoding="utf-8"?>
<resources >
    <style name="TileTheme" parent="android:Theme.Light">
        <item name="android:windowTitleSize">35dp</item>
        <item name="android:windowContentOverlay">@color/noncolort</item>
        <item name="android:windowTitleBackgroundStyle">@style/TileBackground</item>
    </style>
    <color name="noncolort">#00000000</color>
    <style name="TileBackground">
        <item name="android:background">@drawable/drawabletitle</item>
    </style>
</resources>

这个只是主题样式,就是你的APP的界面的显示效果,比如显示背景

具体的标题栏里的内容需要建一个layout文件,可以放按键Button,menu,图片image等控件

title.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center_vertical"
    >
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:id="@+id/tv_title"
            android:text="我的标题"
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/bt_titleBk"
            android:background="@color/color_Backup"
            android:text="返回"
            />
</LinearLayout>
这些准备工作做好后,就可以加载自定义标题了

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)//获取自定义标题栏权限
    setContentView(R.layout.devicescan)
    window.setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.tile)//加载自定义标题栏

    }

特别说明,

获取自定义标题栏权限,要放在setcontentView之前,

然后再调用自定义标题文件,

大功告成……