2015-03-14 41 views
5

Tôi đã sử dụng How do I use DrawerLayout to display over the ActionBar/Toolbar and under the status bar? câu trả lời của Suyash (Tôi cũng thêm thanh công cụ, có thể sai) để đặt Ngăn Điều hướng trên "thanh hành động".Thanh công cụ của Android dành cho API 19? (đối với API 21 hoạt động ok)

Đối với API cấp 21 thay vì "thanh tác vụ", tôi đã sử dụng thanh công cụ và hoạt động tốt.

Nhưng đối với API 19 này không được làm việc:

if(Build.VERSION.SDK_INT > 19) { 
     final Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); 
     setSupportActionBar(toolbar); 
    } 

Bạn có ý tưởng làm thế nào tôi có thể đặt NavigationDrawer qua "actionbar" (hoặc thanh công cụ) cho cấp API 19?

+0

Trước khi tôi thêm thanh công cụ, trong giải pháp của Suyash, nó trông giống như: hideActionBar + android: windowTranslucentStatus.Đối với thanh tác vụ api21 bị biến mất, vì api19 không thay đổi ngoại trừ việc chuyển sang màu xám. Tôi đã làm gì sai sao? – tauri

Trả lời

7

Nếu bạn sử dụng Thanh công cụ thì bạn sẽ có thể xem cùng một Thanh công cụ chính xác trong bất kỳ API nào.

Để làm điều đó bạn nên có một XML trong res/layout:

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:minHeight="?attr/actionBarSize"/> 

Và trong cách bố trí chính bạn, bạn nên bao gồm nó:

<include 
    android:id="@+id/app_bar" 
    layout="@layout/app_bar" /> 

Ngoài ra, bạn nên thiết lập phong cách của bạn như No Action Thanh trên styles.xml của bạn

<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primaryDark</item> 
    <item name="colorAccent">@color/accent</item> 
</style> 

Nhưng đối với API 21, bạn nên có kiểu styles.xml khác:

<style name="AppTheme" parent="AppTheme.Base"> 
    <item name="android:colorPrimary">@color/primary</item> 
    <item name="android:colorPrimaryDark">@color/primaryDark</item> 
    <item name="android:colorAccent">@color/accent</item> 
</style> 

Và cuối cùng trong Hoạt động chính của bạn

toolbar = (Toolbar) findViewById(R.id.app_bar); 
setSupportActionBar(toolbar); 

Và cuối cùng đối với bất kỳ điều bạn muốn làm vào thanh công cụ, có được nó và coi nó như Action Bar cũ:

getSupportActionBar().setHomeAsUpEnabled(true); 
+0

Thay đổi chủ đề của bạn trên API 21 từ AppCompat thành một cái gì đó khác là không cần thiết (và thực sự phá vỡ nhiều chủ đề của 'ActionBarActivity'). – ianhanniballake

+0

Cảm ơn bạn đã trợ giúp. Dường như tôi không thêm vào styles.xml . – tauri

+0

@joaquin. Tôi sử dụng thanh công cụ AppCompat cho dự án của tôi (như bạn nói). nhưng đối với các API thấp hơn (thấp hơn 20), ứng dụng của tôi đã dừng lại. –

4

Material Design for Pre-Lollipop Devices:

Tất cả các chủ đề của bạn (muốn Thanh tác vụ/Thanh công cụ) phải kế thừa từ Chủ đề.AppCompat. Có các biến thể, bao gồm Light và NoActionBar.

Khi lạm phát bất cứ điều gì để được hiển thị trên các hành động bar (chẳng hạn như một SpinnerAdapter cho danh sách menu trong thanh công cụ), chắc chắn rằng bạn sử dụng bối cảnh theo chủ đề thanh hành động của, lấy thông qua getSupportActionBar(). GetThemedContext().


Android Support Library 22.1:

AppCompat phép bạn sử dụng android: theme cho Toolbars (ti ứng dụng: chủ đề sử dụng trước đó), và thậm chí tốt hơn, mang đến cho android: theme hỗ trợ cho tất cả các lượt xem trên các thiết bị API 11+.

Các vấn đề liên quan