如何更改Android操作栏标题和图标


Answers:


514

这很容易完成

如果要在代码中进行更改,请致电:

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

并将值设置为任意值。

或者,在Android清单XML文件中:

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

要在您的应用中启用后退按钮,请使用:

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

代码都应该放在您的代码中,onCreate以便标签/图标更改对用户是透明的,但实际上,可以在活动的生命周期中的任何位置调用它。


23
如果您正在使用支持库添加操作栏,请使用getSupportActionBar代替getActionBar
里克·帕斯托

3
getActionBar().setHomeButtonEnabled(true)使用API​​级别14或更高版本,如果您只想使用旧版本和较新版本的API所需的后退按钮功能getActionBar().setDisplayHomeAsUpEnabled(true)
Akshat Agarwal 2013年

3
getSupportActionBar()。setDisplayShowTitleEnabled(true); 在setTitle(“ 123”);之前;
Jose Manuel AbarcaRodríguez2015年

如果使用代码getActionBar()。setIcon(R.drawable.my_icon); 您可以使其点击吗?
Skitty 2015年

1
@JoseManuelAbarcaRodríguez谢谢,这就是我所缺少的。在Kotlin:supportActionBar?.setDisplayShowTitleEnabled(true)然后supportActionBar?.title = "your title"。并且onResumeonCreate使用创建活动时必须在而不是在里面完成startActivity
埃里克·艾雅

18

要使单个图标可用于所有操作栏,可以在Android清单中执行此操作。

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

    ...

</application>

1
谢谢-我想要在应用程序外部使用一个不同的图标(如“所有应用程序”中所示),并在操作栏的左侧使用另一个图标。这行得通。清单文件仍然具有android:icon =“ @ drawable / ic_launcher”
flobacca 2014年

2
这是正确的方法,因为它pre-loads是图标,以编程方式设置图标很慢!
穆罕默德·巴巴尔

11

您只需要添加这三行代码。用您自己的图标替换图标。如果要生成图标,请使用

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

11

在Android 5.0中,材料设计指南不鼓励在actionBar中使用图标

要启用它,请添加以下代码

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

归功于本文的作者



7

您可以通过将所需的任意图标添加到各自的可绘制文件夹中,然后在AndroidManifest.xml文件中更改此行来更改您的图标:

android:icon="@drawable/ic_launcher"

匹配其中的图标名称。或将您的图标设为ic_launcher(如果它们是同一图标)。至于说什么,添加或更改与res / values / strings.xml文件中的字符串匹配的任何字符串。然后,再次在您的AndroidManifest.xml文件中,更改以下行:

android:label="@string/app_name"

不管你在他们的字符串。您必须对整个应用程序以及您想要进行的任何活动进行此操作,但是这些行是相同的。

希望这可以帮助。


android:icon活动代码应为多大(dp) ?
cuddlecheek '16


5

为此,您可以通过两种方式来实现:XML或Java。请参阅此处:如何更改操作栏上的文本

所以:

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
要通过代码执行此操作,您应该调用setTitle(CharSequence text)setTitle(int titleRes)requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)除非您打算用自己的自定义视图替换整个标题栏,否则不要使用。
Karakuri 2013年

3

对于集合标题

getActionBar().setTitle("Title");

对于设置的图标

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

2

我在里面使用了以下调用onNavigationItemSelected

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


1

这项工作对我来说:

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

0

默认情况下,操作栏标题将使用当前活动的标签,但是您也可以通过编程设置它ActionBar.setTitle()

要实现您正在谈论的“后退”(更确切地说是“向上”)按钮功能,请阅读《Action Bar开发人员指南》中的“使用应用程序图标进行导航”部分。

最后,要更改图标,该指南也将进行介绍。简而言之,操作栏将显示android:icon清单applicationactivity元素中提供的图像(如果有的话)。典型的做法是创建一个名为的应用程序图标(具有各种密度)ic_launcher.png,并将其放置在drawable-*目录中。


0

我收到non-static method setTitle(CharSequence) cannot be referenced from a static context错误消息是因为我setTitle()在静态PlaceholderFragment类中使用过。我通过使用解决了getActivity().getActionBar().setTitle("new title");



0

转到AndroidManifest.xml文件。查找<application>标签在那里您可以看到一个属性

android:label="@string/app_name"

现在转到res> values> strings.xml

改变

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

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

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>

strings.xml

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

0

您还可以执行以下操作:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.