所需活动中的操作栏

Posted

技术标签:

【中文标题】所需活动中的操作栏【英文标题】:actionbar in desired activities 【发布时间】:2018-07-15 11:09:49 【问题描述】:

我对styles.xml 有疑问。 当我将 windowActionBar 设置为 false 时,这将设置为我的应用程序中的所有活动。我不想要那个。我只想在我的第一个活动(启动屏幕)中使用它,我的下一个活动将有一个操作栏。

<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="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme2" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowActionBar">true</item>
        <item name="windowNoTitle">true</item>
    </style>

我认为如果我为下一个活动设置自定义主题,这个问题将成为过去。这是我的清单:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true">
        <activity
            android:name=".SplashActivity"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:theme="@style/MyTheme2"></activity>
    </application>

</manifest>

但我仍然有同样的问题...如何使操作栏仅对第二个活动可见?!

【问题讨论】:

【参考方案1】:

您的启动活动不应使用如下操作栏主题:

 <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:theme="@style/AppTheme"
    android:supportsRtl="true">
    <activity
        android:name=".SplashActivity"
        android:theme="Theme.AppCompat.Light.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
         ></activity>
</application>

【讨论】:

同样的事情发生在下一个活动中,那里没有可见的操作栏:/ 您的主要活动从何而来? AppCompatActivity 将应用程序主题更改为您的主要活动主题【参考方案2】:
You can have toolbar in any activity in which you want to have actionbar 

You can set title programmatically to a toolbar 
ActionBar ActionBar;
Toolbar toolbar = findviewid(R.id.toolbaar);
Setsupportactionbar(toolbaar);
actionbar= getsupportactionbar();
actionbar.settitle("your title");

【讨论】:

以上是关于所需活动中的操作栏的主要内容,如果未能解决你的问题,请参考以下文章

使用操作栏中的图标按钮导航到另一个活动

所需活动中的操作栏

按活动栏中的按钮导致应用程序崩溃

使用 router.navigate 时更改导航栏中的活动选项卡

导航栏中的 1 个按钮未显示悬停、按下和活动状态

重新加载页面后如何突出显示导航栏中的活动菜单项