如何在没有支持库的情况下将 MaterialToolbar 设置为 ActionBar
How to set MaterialToolbar as ActionBar without support libraries
有没有办法将 MaterialToolbar
设置为 Activity
的 ActionBar
?每当我尝试设置我的时,Android Studio 一直要求从支持库中获取 Toolbar
。
Required: Toolbar? - Found: MaterialToolbar
XML
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.appbar.AppBarLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/myAppBarLayout">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/myCollapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="250dp"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|snap|exitUntilCollapsed">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/myToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:contentInsetStartWithNavigation="0dp"
app:layout_collapseMode="pin" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
Kotlin
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.collapsingtoolbar_and_recyclerview)
val mCoordinatorLayout = findViewById<CoordinatorLayout>(R.id.myCoordinatorLayout)
val mCollapsingToolbarLayout = findViewById<CollapsingToolbarLayout>(R.id.myCollapsingToolbarLayout)
val mToolbar = findViewById<MaterialToolbar>(R.id.myToolbar)
// ...Do other stuff here
setActionBar(mCollapsingToolbarLayout)
mCollapsingToolbarLayout.title = "Hello, world!"
}
}
setActionBar()
需要一个 框架 Toolbar
。 MaterialToolbar
正确扩展了 AndroidX Toolbar
,这意味着您必须使用 AppCompatActivity
和 setSupportActionBar()
而不是 Activity
和 setActionBar()
.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.collapsingtoolbar_and_recyclerview)
//[...]
val toolbar = findViewById<MaterialToolbar>(R.id.myToolbar)
setSupportActionBar(toolbar)
// ...Do other stuff here
supportActionBar.title = "My MainActivity"
supportActionBar.setDisplayHomeAsUpEnabled(true)
}
}
有没有办法将 MaterialToolbar
设置为 Activity
的 ActionBar
?每当我尝试设置我的时,Android Studio 一直要求从支持库中获取 Toolbar
。
Required: Toolbar? - Found: MaterialToolbar
XML
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.appbar.AppBarLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/myAppBarLayout">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/myCollapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="250dp"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|snap|exitUntilCollapsed">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/myToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:contentInsetStartWithNavigation="0dp"
app:layout_collapseMode="pin" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
Kotlin
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.collapsingtoolbar_and_recyclerview)
val mCoordinatorLayout = findViewById<CoordinatorLayout>(R.id.myCoordinatorLayout)
val mCollapsingToolbarLayout = findViewById<CollapsingToolbarLayout>(R.id.myCollapsingToolbarLayout)
val mToolbar = findViewById<MaterialToolbar>(R.id.myToolbar)
// ...Do other stuff here
setActionBar(mCollapsingToolbarLayout)
mCollapsingToolbarLayout.title = "Hello, world!"
}
}
setActionBar()
需要一个 框架 Toolbar
。 MaterialToolbar
正确扩展了 AndroidX Toolbar
,这意味着您必须使用 AppCompatActivity
和 setSupportActionBar()
而不是 Activity
和 setActionBar()
.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.collapsingtoolbar_and_recyclerview)
//[...]
val toolbar = findViewById<MaterialToolbar>(R.id.myToolbar)
setSupportActionBar(toolbar)
// ...Do other stuff here
supportActionBar.title = "My MainActivity"
supportActionBar.setDisplayHomeAsUpEnabled(true)
}
}