如何将操作栏添加到第二个 activity 而不是第一个
How to add action bar to second activity but not to first one
我有两个活动,第一个是简单的登录页面,我在其中禁用了操作栏,因为我不需要它,第二个 activity 是用户提要部分,我想在其中添加带有文本的操作栏或搜索选项和应用程序抽屉。如何将操作栏添加到第二个 activity 而不是第一个?
您可以为第 2 个定义不同的主题activity。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
</style>
<style name="LoginTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
</style>
您应该将这样的应用主题设置为默认没有操作栏。
<style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorPrimary</item>
</style>
在您的 AndroidManifest.xml 文件中,在 <application>
标记中添加此行:
android:theme="@style/AppTheme"
如果您需要某些 activity 上的操作栏,只需将其添加到您的 activity 布局文件中:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="owo.owocar.driver.rides_history_entity.ui.HistorySingleActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:background="@drawable/gradient"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:background="@drawable/gradient"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_history_single" />
</android.support.design.widget.CoordinatorLayout>
我会为 Apptheme 使用 NoActionBar 样式:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
然后在 activity 的布局中你想要一个操作栏,你可以包括它:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.xxx.xxx.Activity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/fragment" />
</android.support.design.widget.CoordinatorLayout>
这会在 activity 的顶部生成栏,没有任何 buttons/text/menu。在 Activity.java:
中创建一个工具栏
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
希望对您有所帮助。
您现在可以简单地使用 Toolbar
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:title="Hello World"
android:elevation="4dp"
android:id="@+id/my_toolbar"
/>
然后在您的 Activity.java
文件中将其设置为操作栏
Toolbar myToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
myToolbar = findViewById(R.id.my_toolbar);
setActionBar(myToolbar);
}
请注意,上面示例中使用的 Toolbar
是 android.widget.Toolbar
而不是 androidx.appcompat.widget.Toolbar
我有两个活动,第一个是简单的登录页面,我在其中禁用了操作栏,因为我不需要它,第二个 activity 是用户提要部分,我想在其中添加带有文本的操作栏或搜索选项和应用程序抽屉。如何将操作栏添加到第二个 activity 而不是第一个?
您可以为第 2 个定义不同的主题activity。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
</style>
<style name="LoginTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
</style>
您应该将这样的应用主题设置为默认没有操作栏。
<style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorPrimary</item>
</style>
在您的 AndroidManifest.xml 文件中,在 <application>
标记中添加此行:
android:theme="@style/AppTheme"
如果您需要某些 activity 上的操作栏,只需将其添加到您的 activity 布局文件中:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="owo.owocar.driver.rides_history_entity.ui.HistorySingleActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:background="@drawable/gradient"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:background="@drawable/gradient"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_history_single" />
</android.support.design.widget.CoordinatorLayout>
我会为 Apptheme 使用 NoActionBar 样式:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
然后在 activity 的布局中你想要一个操作栏,你可以包括它:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.xxx.xxx.Activity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/fragment" />
</android.support.design.widget.CoordinatorLayout>
这会在 activity 的顶部生成栏,没有任何 buttons/text/menu。在 Activity.java:
中创建一个工具栏toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
希望对您有所帮助。
您现在可以简单地使用 Toolbar
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:title="Hello World"
android:elevation="4dp"
android:id="@+id/my_toolbar"
/>
然后在您的 Activity.java
文件中将其设置为操作栏
Toolbar myToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
myToolbar = findViewById(R.id.my_toolbar);
setActionBar(myToolbar);
}
请注意,上面示例中使用的 Toolbar
是 android.widget.Toolbar
而不是 androidx.appcompat.widget.Toolbar