Nếu bạn đang sử dụng AppCompatActivity
và đã đi vào con đường không sử dụng nó, vì bạn muốn không nhận được tự động ActionBar
mà nó cung cấp, vì bạn muốn tách ra Toolbar
, vì nhu cầu Thiết kế Vật liệu của bạn và CoordinatorLayout
hoặcAppBarLayout
, sau đó, hãy xem xét điều này:
Bạn vẫn có thể sử dụng AppCompatActivity
, bạn không cần ngừng sử dụng nó để bạn có thể sử dụng a <android.support.v7.widget.Toolbar>
trong xml của mình. Chỉ cần tắt kiểu thanh hành động như sau:
Đầu tiên, lấy một phong cách từ một trong những chủ đề NoActionBar mà bạn thích trong đó styles.xml
, tôi đã sử dụng Theme.AppCompat.Light.NoActionBar
như vậy:
<style name="SuperCoolAppBarActivity" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/primary_dark</item>
...
...
</style>
Trong bảng kê khai ứng dụng của bạn, chọn chủ đề kiểu con bạn vừa xác định, như vậy:
<activity
android:name=".activity.YourSuperCoolActivity"
android:label="@string/super_cool"
android:theme="@style/SuperCoolAppBarActivity">
</activity>
Trong Activity Xml của bạn, nếu thanh công cụ được xác định như vậy:
...
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
/>
...
Sau đó, và đây là phần quan trọng, bạn đặt thanh Hành động hỗ trợ thành AppCompatActivity mà bạn đang mở rộng, để thanh công cụ trong xml của bạn trở thành thanh hành động. Tôi cảm thấy rằng đây là một cách tốt hơn, bởi vì bạn có thể đơn giản thực hiện nhiều việc mà ActionBar cho phép, như menu, tiêu đề hoạt động tự động, xử lý lựa chọn vật phẩm, v.v. mà không cần dùng đến trình xử lý nhấp chuột tùy chỉnh, v.v.
Trong phần ghi đè onCreate của Activity, hãy làm như sau:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_super_cool);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Your toolbar is now an action bar and you can use it like you always do, for example:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}