如何自定义 android activity 的标题文字
How to customize title text of android activity
我正在尝试编辑标题文字大小,因为它在横屏时会发生变化。我发现更改 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"
现在它在 Main activity 上给出了预期的结果,但所有其他活动都是相同的。我的应用程序中有大约 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>
可以使用<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>
在每个 Activity 中使用 <include layout="@layout/toolbar_header"/>
。
好的,我已经解决了这个问题。之前的代码不适用于其他布局,因为 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>
现在一切正常。谢谢大家的回复。
我正在尝试编辑标题文字大小,因为它在横屏时会发生变化。我发现更改 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"
现在它在 Main activity 上给出了预期的结果,但所有其他活动都是相同的。我的应用程序中有大约 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>
可以使用<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>
在每个 Activity 中使用 <include layout="@layout/toolbar_header"/>
。
好的,我已经解决了这个问题。之前的代码不适用于其他布局,因为 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>
现在一切正常。谢谢大家的回复。