如何使所有活动(MainActivity 除外)同时具有 ActionBar/Toolbar 以及 Activity 的标题和后退按钮?

How to make all activities(except MainActivity) have ActionBar/Toolbar at once with the title of the Activity and a back button?

我有以下 MainActivity:

当我点击“Congreso”按钮时,出现以下 activity:

当我点击“Programa”按钮时,出现以下 activity:

MainActivity 之外的所有活动都有一个带后退按钮的操作栏,activity 的标题每次都在同一位置对齐,并且操作栏的颜色相同。就我而言,我希望颜色为蓝色。我的问题是,有没有办法在应用程序的一个地方设置该行为,并将其应用于除 MainActivity 之外的所有活动,这样如果有一天我想更改操作栏的颜色或者它的标题的对齐方式我不必一个一个地去所有的活动并更改它。

P.S.: 不知道截图上的是action bar还是toolbar。如果你给我一个带有工具栏的解决方案也可以。

请制作一个 BaseActivity ,使用 BaseActivity 中的操作栏,在那里处理“Back Image Click”,然后在 Individual Activity 中设置相应的标题名称。所有活动都将扩展 BaseActivity,不包括 MainActivity

在 styles.xml

中创建 2 个主题
 <style name="NoActionAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorPrimaryDark</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
    </style>

 <style name="ActionBarTheme" 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>
    </style>

下一步 在您的清单文件中

<activity
            android:name="MainActivity"
            android:label="title you want to set to action bar"
            android:theme="@style/NoActionAppTheme" />


<activity
            android:name="OtherActivity"
            android:label="title you want to set to action bar"
            android:parentActivityName=".MainActivity" // where you want go on clicking back
            android:theme="@style/ActionBarTheme" />

使用这种方法,您必须对 styles.xml 进行更改,其余的将自行解决

以编程方式设置标题

getSupportActionBar().setTitle("Some Title You Want");

显示后退按钮很重要

getSupportActionBar().setDisplayShowHomeEnabled(true);