如何自定义android活动的标题文本

时间:2017-09-07 09:11:48

标签: android android-activity title custom-titlebar

我正在尝试编辑标题文字大小,因为它在横向屏幕中会发生变化。我发现改变SP中的维度可以解决问题。所以我这样做了......

style.xml

中添加了一种样式
<style name="Toolbar.TitleText"
    parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textSize">30sp</item>
</style>

然后在android.support.v7.widget.Toolbar下的app_bar_main.xml中添加了这一行

app:titleTextAppearance="@style/Toolbar.TitleText"

现在它在主要活动上提供了所需的结果,但所有其他活动都是相同的。我的应用程序中有大约10个活动。如何更改所有活动的标题?请帮忙。提前谢谢。

我的 manifest.xml

<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/title_main"
        android:theme="@style/AppTheme.NoActionBar" />
    <activity
        android:name=".splash"
        android:screenOrientation="portrait"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ch_1"
        android:label="@string/ch_1" />
    <activity
        android:name=".ch_2"
        android:label="@string/ch_2" />
    <activity
        android:name=".ch_3"
        android:label="@string/ch_3" />
    <activity
        android:name=".ch_4"
        android:label="@string/ch_4" />
    <activity
        android:name=".ch_5"
        android:label="@string/ch_5" />
    <activity
        android:name=".ch_6"
        android:label="@string/ch_6" />
    <activity
        android:name=".ch_7"
        android:label="@string/ch_7" />
    <activity
        android:name=".ch_8"
        android:label="@string/ch_8" />
    <activity
        android:name=".ch_9"
        android:label="@string/ch_9" />
    <activity
        android:name=".ch_10"
        android:label="@string/ch_10" />
    <activity
        android:name=".ch_11"
        android:label="@string/ch_11" />
    <activity android:name=".ch_12"
        android:label="@string/ch_12" />
    <activity
        android:name=".ch_13"
        android:label="@string/ch_13" />
    <activity
        android:name=".ch_14"
        android:label="@string/ch_14" />
    <activity
        android:name=".ch_15"
        android:label="@string/ch_15" />
    <activity android:name=".view" />
</application>

我的 style.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@color/white</item>
    <item name="colorButtonNormal">@color/colorPrimary</item>
    <item name="android:textAppearanceButton">@style/TextAppearance.AppCompat.Button.Custom</item>
</style>


<style name="Toolbar.TitleText"
    parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textSize">24sp</item>
</style>


<style name="TextAppearance.AppCompat.Button.Custom">
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">28sp</item>
</style>


<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.ActionButton">
    <item name="android:minWidth">0dip</item>
    <item name="android:paddingLeft">0dip</item>
    <item name="android:paddingRight">0dip</item>
</style>


<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/splash</item>
</style>

2 个答案:

答案 0 :(得分:0)

您可以使用<include>标记来实现它。 就像这样

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.dzq.aprivate.view.activity.MainActivity">

    <include layout="@layout/lay_actionbar"/>

    <FrameLayout
        android:id="@+id/lay_container"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp"/>

    <include layout="@layout/lay_main_bottom"/>
</LinearLayout>

在您想要的每个活动中使用<include layout="@layout/toolbar_header"/>

答案 1 :(得分:0)

好的,我已经解决了这个问题。之前的代码不适用于其他布局,因为activity_main.xml使用工具栏而不是操作栏,所以我不得不为操作栏编写另一个样式。 我添加了这些风格..

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="titleTextStyle">@style/MyTitleTextStyle</item>
</style>

<style name="MyTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textSize">24sp</item>
</style>

然后像这样在AppTheme中添加项目..

<item name="actionBarStyle">@style/MyActionBar</item>

现在它正常工作。谢谢大家回复。