2013-01-23 55 views
189

Tôi đang cố gắng thực hiện một số điều trên ActionBar trong Android.Làm cách nào để thay đổi tiêu đề và biểu tượng trên thanh tác vụ android

Tôi đã thêm các mục mới ở bên phải thanh tác vụ.

Làm cách nào để thay đổi bên trái của thanh tác vụ? Tôi muốn thay đổi biểu tượng và văn bản, và tôi muốn thêm một "Nút Quay lại" trong thanh hành động cho các màn hình khác

Android Action Bar

Trả lời

456

này là rất đơn giản để thực hiện

Nếu bạn muốn thay đổi nó trong mã , gọi:

setTitle("My new title"); 
getActionBar().setIcon(R.drawable.my_icon); 

Và đặt giá trị thành bất kỳ điều gì bạn muốn.

Hoặc, trong Android manifest file XML:

<activity android:name=".MyActivity" 
     android:icon="@drawable/my_icon" 
     android:label="My new title" /> 

Để kích hoạt nút quay lại sử dụng ứng dụng của bạn:

getActionBar().setHomeButtonEnabled(true); 
getActionBar().setDisplayHomeAsUpEnabled(true); 

Mã nên tất cả được đặt trong onCreate của bạn để các nhãn/biểu tượng thay đổi là minh bạch cho người dùng, nhưng trong thực tế nó có thể được gọi là bất cứ nơi nào trong vòng đời của hoạt động.

+18

Nếu bạn đang sử dụng thư viện hỗ trợ để thêm thanh hành động, hãy sử dụng 'getSupportActionBar' thay vì' getActionBar'. –

+3

'getActionBar(). SetHomeButtonEnabled (true)' sử dụng API level 14 trở lên, nếu bạn chỉ muốn chức năng nút quay lại trong các API cũ hơn cũng như mới hơn, bạn chỉ cần 'getActionBar(). SetDisplayHomeAsUpEnabled (true)' –

+2

getSupportActionBar(). setDisplayShowTitleEnabled (true); trước setTitle ("123"); –

4

Cho rằng, bạn có thể làm điều đó trong 2 cách sau: XML hay Java. Xem ở đây: How to change the text on the action bar

Vì vậy:

XML:

<activity android:name=".Hello_World" 
       android:label="This is the Hello World Application"> 
</activity> 

Java:

public class TitleBar extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

     setContentView(R.layout.main); 


     if (customTitleSupported) { 
      getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar); 
      } 

     final TextView myTitleText = (TextView) findViewById(R.id.myTitle); 
     if (myTitleText != null) { 
      myTitleText.setText("NEW TITLE"); 

      // user can also set color using "Color" and then "Color value constant" 
      // myTitleText.setBackgroundColor(Color.GREEN); 
     } 
} 
} 
+2

Để làm điều đó từ mã, bạn nên gọi 'setTitle (văn bản CharSequence)' hoặc 'setTitle (int titleRes)'. Không sử dụng 'requestWindowFeature (Window.FEATURE_CUSTOM_TITLE)' trừ khi bạn định thay thế toàn bộ thanh tiêu đề bằng Chế độ xem tùy chỉnh của riêng bạn. – Karakuri

5

Bạn có thể thay đổi biểu tượng trong bạn bằng cách thêm bất cứ điều gì bạn muốn biểu tượng vào thư mục drawable tương ứng của bạn, sau đó thay đổi dòng này trong file AndroidManifest.xml của bạn:

android:icon="@drawable/ic_launcher" 

để phù hợp với bất cứ điều gì tên của biểu tượng của bạn là trong đó. Hoặc đặt biểu tượng của bạn là ic_launcher, nếu chúng có cùng biểu tượng. Đối với những gì nó nói, thêm hoặc thay đổi bất kỳ chuỗi nào phù hợp với điều đó trong tệp res/values ​​/ strings.xml của bạn. Sau đó, một lần nữa trong tệp AndroidManifest.xml của bạn, hãy thay đổi dòng này:

android:label="@string/app_name" 

cho bất kỳ chuỗi nào bạn có trong đó. Bạn sẽ phải làm điều này cho toàn bộ ứng dụng và bất cứ hoạt động nào bạn muốn, nhưng các dòng này giống nhau.

Hy vọng điều này sẽ hữu ích.

+0

Kích thước (dp) này sẽ là 'android: icon' trong thẻ hoạt động là gì? – cuddlecheek

0

Tiêu đề thanh tác vụ sẽ theo mặc định, sử dụng nhãn của hoạt động hiện tại, nhưng bạn cũng có thể đặt nó theo cách lập trình qua ActionBar.setTitle().

Để triển khai chức năng nút "Quay lại" (chính xác hơn, "Lên") mà bạn đang nói đến, hãy đọc phần "Sử dụng biểu tượng ứng dụng để điều hướng" của Action Bar developer guide.

Cuối cùng, để thay đổi biểu tượng, hướng dẫn cũng bao gồm cả biểu tượng đó. Tóm lại, thanh tác vụ sẽ hiển thị hình ảnh được cung cấp trong android:icon trong phần tử application hoặc activity của tệp kê khai của bạn, nếu có. Cách thực hành thông thường là tạo một biểu tượng ứng dụng (trong tất cả các mật độ khác nhau mà bạn sẽ cần) có tên là ic_launcher.png và đặt nó trong các thư mục drawable-* của bạn.

16

Để làm cho một biểu tượng duy nhất có thể sử dụng được bởi tất cả các thanh tác vụ của bạn, bạn có thể thực hiện điều này trong Tệp kê khai Android.

<application 
    android:logo="@drawable/Image"> 

    ... 

</application> 
+1

thanks- Tôi muốn có một biểu tượng khác cho bên ngoài ứng dụng (như được thấy trong "Tất cả ứng dụng") và một biểu tượng khác ở bên trái thanh tác vụ. Và điều này đã hiệu quả. Tệp kê khai vẫn có android: icon = "@ drawable/ic_launcher" – flobacca

+2

Đây là cách phù hợp vì nó 'tải trước' biểu tượng, biểu tượng cài đặt lập trình chậm! –

8

Nếu bạn muốn thay đổi tiêu đề thanh hành động chỉ cung cấp cho đoạn mã sau 1 dòng trong onCreate() của hoạt động của bạn

getActionBar().setTitle("Test"); 
+0

Làm cách nào để tạo hiệu ứng thay đổi tiêu đề này? –

0

tôi đã non-static method setTitle(CharSequence) cannot be referenced from a static context lỗi vì tôi đã sử dụng setTitle() trong lớp PlaceholderFragment tĩnh . Tôi đã giải quyết nó bằng cách sử dụng getActivity().getActionBar().setTitle("new title");

7

Bạn chỉ cần thêm 3 dòng mã này. Thay thế biểu tượng bằng biểu tượng của riêng bạn. Nếu bạn muốn tạo ra các biểu tượng sử dụng this

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow); 
getActionBar().setHomeButtonEnabled(true); 
getActionBar().setDisplayHomeAsUpEnabled(true); 
2

Đối với bộ Tiêu đề: getActionBar() setTitle ("Title");.

Đối với bộ biểu tượng: getActionBar(). SetIcon (R.drawable.YOUR_ICON_NAME);

+1

Hoặc ngược lại hahahaa. –

4

Trong Android 5.0 hướng dẫn thiết kế các tài liệu khuyến khích việc sử dụng các biểu tượng trong actionBar

để kích hoạt nó thêm đoạn mã sau

getSupportActionBar().setDisplayShowHomeEnabled(true); 
getSupportActionBar().setLogo(R.mipmap.ic_launcher); 
getSupportActionBar().setDisplayUseLogoEnabled(true); 

tín dụng đi vào tác giả của này article

1

tôi đã sử dụng sau gọi bên trong onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle()); 
Các vấn đề liên quan