我正在使用新的工具栏并将其设置为 supportActionBar。 我的问题是它覆盖了我的内容。
这是我用来设置工具栏的代码。
public void setupNavBar() {
mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
if (mToolbar != null) {
setSupportActionBar(mToolbar);
mActionBar = getSupportActionBar();
mActionBar.setDisplayShowHomeEnabled(true);
mActionBar.setDisplayShowTitleEnabled(false);
}
}
风格:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
</style>
<style name="ToolBarStyle" parent="">
<item name="android:elevation">5dp</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>
和布局:
<RelativeLayout 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"
tools:context=".MainActivity">
<android.support.v7.widget.Toolbar
style="@style/ToolBarStyle"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/material_blue_grey_800"
android:minHeight="@dimen/abc_action_bar_default_height_material"
android:id="@+id/toolbar_actionbar"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#478"
android:text="@string/hello_world" />
我认为通过调用 setSupportActionbar 系统会负责将内容定位在工具栏视图下方,但这不是我所看到的。
工具栏的正确使用方法是什么?我在一些活动中希望工具栏与其后面的内容透明,而在其他活动中我希望工具栏与其下面的内容不透明。
谢谢
在文本视图中使用下面
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#478"
android:text="@string/hello_world"
android:layout_below="@+id/toolbar_actionbar"
/>
我刚刚遇到了同样的问题。 我通过在 context_main.xml 文件中添加这两行来修复它:
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.yourappname.MainActivity"
像这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:background="@color/blue"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.yourappname.MainActivity"
tools:showIn="@layout/app_bar_main">
我明白了为什么内容被操作栏覆盖了。如果您使用最新的 Kotlin 版本,第一次创建 Android 项目时您将看到以下代码:
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
不要删除它们,如果您在应用程序中使用操作栏,您的内容将不会被操作栏覆盖。我尝试根据操作栏大小在内容中进行填充,但在操作栏下并不完美