2014-12-17 58 views
16

Tôi đang cố gắng sử dụng Thanh công cụ thay vì ActionBar, nhưng tôi không thể tìm ra cách thêm nút lên để quay lại hoạt động trước đó. Tôi không thể tìm thấy bất kỳ phương pháp nào có thể liên quan đến nó.Thanh công cụ - thêm nút lên

Làm cách nào để thêm nút lên?

Trả lời

23

Tôi đoán những gì bạn đang tìm kiếm là một cái gì đó như thế này:

Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar_detail); 
setSupportActionBar(toolbar); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Hoặc trong trường hợp sử dụng trong Fragment :

Toolbar toolbar = (Toolbar) view.findViewById(R.id.app_bar_detail); 
((ActionBarActivity) getActivity()).setSupportActionBar(toolbar); 
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Điều này sẽ hiển thị thanh tác vụ bên trong thanh công cụ của bạn, nhưng đừng lo lắng mọi thứ sẽ khớp với nhau ll. Cuối cùng bạn phải làm gì nếu bạn không muốn bất kỳ bóng dưới thanh hành động của bạn hoặc bất kỳ nền tảng của nó là thay đổi chủ đề của bạn trong vaules/styles.xml.

<style name="AppThmeme.Base" parent="Theme.AppCompat.NoActionBar"> 
1

Calling getSupportActionBar().setHomeButtonEnabled(true); vẫn nên làm việc Tôi nghĩ rằng, miễn là bạn đã gọi setSupportActionBar(toolbar);

0

Bạn có thể thêm nút 'lên' của riêng mình trong thanh công cụ, sau khi tất cả chỉ là một ViewGroup.

Bạn có thể tùy chỉnh thanh công cụ nhiều như bạn muốn, trong toolbar.xml của bạn, hoặc bất cứ nơi nào bạn đã xác định android.support.v7.widget.Toolbar trong cách bố trí của bạn thêm của bạn 'lên' nút như đưa ra dưới đây:

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:minHeight="?attr/actionBarSize" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@drawable/color_toolbar" 
    android:layout_width="match_parent"> 

    <ImageButton 
     android:id="@+id/upButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="uphandler" 
     android:src="@drawable/backbutton" 
     android:layout_gravity="end"/> 

</android.support.v7.widget.Toolbar> 

Bây giờ, xác định uphandler chức năng trong hoạt động của bạn để nghe nút này lên:

public void uphandler(View v){ 
     this.finish(); // This will kill current activity, and if previous activity is still opened in background, it will come in front. 
} 
+0

Sử dụng this.finish() là một mẫu chống, vì biểu tượng "lên" sẽ đưa người dùng đến cha mẹ phân cấp trong ứng dụng của bạn - không nhất thiết là màn hình cuối cùng mà họ đã xem: https://material.google.com /patterns/navigation.html#navigation-up-back-buttons – gsysko

3

Nếu bạn muốn làm điều này trong XML, bạn có thể sử dụng ...

<android.support.v7.widget.Toolbar 
      app:navigationIcon="?homeAsUpIndicator" 
      ... 
Các vấn đề liên quan