Làm cách nào để thay đổi tiêu đề và biểu tượng thanh hành động Android


225

Tôi đang cố gắng thực hiện một số điều trên ActionBar trong Android.

Tôi đã thêm các mục mới ở bên phải của thanh hành động.

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

Thanh hành động Android

Câu trả lời:


514

Điều này rất đơn giản để thực hiện

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

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

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

Hoặc, trong tệp XML tệp kê khai của Android:

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

Để bật nút quay lại trong ứng dụng của bạn, hãy sử dụng:

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

Tất cả mã phải được đặt trong của bạn onCreateđể thay đổi nhãn / biểu tượng trong suốt cho người dùng, nhưng thực tế nó có thể được gọi ở bất cứ đâu trong vòng đời của hoạt động.


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

3
getActionBar().setHomeButtonEnabled(true)sử dụng API cấp 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ư các API mới hơn mà bạn chỉ cầngetActionBar().setDisplayHomeAsUpEnabled(true)
Akshat Agarwal

3
getSupportActionBar (). setDisplayShowTitleEnables (true); trước setTitle ("123");
Jose Manuel Abarca Rodríguez

Nếu bạn sử dụng mã getActionBar (). SetIcon (R.drawable.my_icon); bạn có thể làm cho nó có thể nhấp được không?
Skitty

1
@ JoseManuelAbarcaRodríguez Cảm ơn bạn, đó là những gì còn thiếu cho tôi. Trong Kotlin: supportActionBar?.setDisplayShowTitleEnabled(true)sau đó supportActionBar?.title = "your title". Và nó phải được thực hiện onResume, không phải trong onCreate, khi tạo hoạt động với startActivity.
Eric Aya

18

Để tạo một biểu tượng duy nhất có thể sử dụng được bằng tất cả các thanh hành động của bạn, bạn có thể thực hiện điều này trong Bản kê khai Android của mình.

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

    ...

</application>

1
cảm ơn- 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 của thanh hành động. Và điều này đã làm việc. Tệp kê khai vẫn có android: icon = "@ drawable / ic_launcher"
flobacca

2
Đây là cách đúng vì nó pre-loadslà biểu tượng, biểu tượng cài đặt lập trình chậm!
Muhammad Babar

11

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 biểu tượng, hãy sử dụng biểu tượng này

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

11

Trong hướng dẫn thiết kế vật liệu Android 5.0 không khuyến khích sử dụng biểu tượng trong actionBar

để cho phép nó thêm mã sau đây

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

tín dụng cho tác giả của bài viết này


9

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

getActionBar().setTitle("Test");

Làm thế nào tôi có thể làm động thay đổi tiêu đề này?
Srikar Reddy

7

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

android:icon="@drawable/ic_launcher"

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

android:label="@string/app_name"

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

Hi vọng điêu nay co ich.


Kích thước (dp) này android:icontrong thẻ hoạt động là bao nhiêu?
cuddlecheek

6
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);

5

Đối với điều đó, bạn có thể làm điều đó theo 2 cách: XML hoặc Java. Xem tại đây: Cách thay đổi văn bản trên thanh hành động

Vì thế:

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(CharSequence text)hoặc setTitle(int titleRes). Không sử dụng requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)trừ khi bạn có kế hoạch thay thế toàn bộ thanh tiêu đề bằng Chế độ xem tùy chỉnh của riêng bạn.
Karakuri

3

Để đặt Tiêu đề :

getActionBar().setTitle("Title");

Để đặt Biểu tượng :

getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);

2

Tôi đã sử dụng cuộc gọi sau đây bên trong onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle());

1

Thêm mã dưới đây bên trong một hàm onCreate trong hoạt động của bạn.

setTitle("NewName");

1

Công việc này đối với tôi:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);

0

Theo mặc định, tiêu đề thanh hành động sẽ 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 chương trình thông qua ActionBar.setTitle().

Để triển khai chức năng nút "Quay lại" (chính xác hơn là "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" trong hướng dẫn dành cho nhà phát triển Action Bar .

Cuối cùng, để thay đổi biểu tượng, hướng dẫn cũng bao gồm điều đó. Nói tóm lại, thanh hành động sẽ hiển thị hình ảnh được cung cấp trong android:icontệp kê khai applicationhoặc activityphần tử của bạn, nếu có. Cách thực hành điển hình 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 cần) được đặt tên ic_launcher.pngvà đặt nó vào drawable-*thư mục của bạn .


0

Tôi đã non-static method setTitle(CharSequence) cannot be referenced from a static contextgặp 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ụnggetActivity().getActionBar().setTitle("new title");


0

Chuyển đến tệp kê khai trong đó hoạt động cụ thể mà bạn muốn thay đổi Thanh tiêu đề Tên hành động và viết android: nhãn = "Tên tiêu đề"


0

Chuyển đến tệp AndroidManifest.xml . Tìm <application>thẻ Ở đó bạn có thể thấy một thuộc tính

android:label="@string/app_name"

Bây giờ, hãy truy cập res> value> chuỗi.xml

Thay đổi

<string name="app_name">MainActivity</string> 

đến

<string name="app_name">Your Desired Name</string>

Thí dụ

AndroidManifest.xml

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubmitForm">

        </activity>
    </application>

chuỗi DOM

<resources>
    <string name="app_name">Your Desired Name</string>
    <string name="action_settings">Settings</string>
</resources>

0

Bạn cũng có thể làm như sau:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.