241

我正在尝试在 Android 的 ActionBar 上做一些事情。

我已经在操作栏的右侧添加了新项目。

如何更改操作栏的左侧?我想更改图标和文本,我想在其他屏幕的操作栏中添加一个“返回按钮”

安卓操作栏

4

17 回答 17

540

这很容易实现

如果要在代码中更改它,请调用:

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以便标签/图标更改对用户透明,但实际上它可以在活动生命周期的任何地方调用。

于 2013-01-23T15:48:17.277 回答
19

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

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

    ...

</application>
于 2013-11-21T16:55:10.517 回答
13

您只需要添加这 3 行代码。将图标替换为您自己的图标。如果你想生成图标使用这个

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
于 2016-03-17T07:40:03.580 回答
12

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

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

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

归功于这篇文章的作者

于 2017-06-25T10:48:02.163 回答
9

如果要更改操作栏标题,只需在 Activity 的 onCreate() 中提供以下 1 行代码

getActionBar().setTitle("Test");
于 2014-04-22T07:46:06.187 回答
7

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

android:icon="@drawable/ic_launcher"

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

android:label="@string/app_name"

到你在他们的任何字符串。您必须为整个应用程序以及您想要的任何活动执行此操作,但行是相同的。

希望这可以帮助。

于 2013-01-23T15:48:58.000 回答
7
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);
于 2018-03-26T14:09:31.347 回答
5

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

所以:

XML:

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

爪哇:

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);
       }
 }
}
于 2013-01-23T15:42:39.690 回答
3

对于设置标题

getActionBar().setTitle("Title");

对于设置图标

getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);
于 2016-06-03T14:15:46.163 回答
2

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

HomeActivity.this.setTitle(item.getTitle());
于 2017-08-16T20:41:00.080 回答
2

在您的活动的 onCreate 函数中添加以下代码。

setTitle("NewName");
于 2018-04-13T14:09:49.157 回答
1

转到清单中要更改的特定活动操作栏标题名称并编写 android:label="Title name"

于 2018-04-02T11:02:09.410 回答
1

这对我有用:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);
于 2018-09-22T18:27:30.920 回答
0

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

要实现您所说的“返回”(更准确地说是“向上”)按钮功能,请阅读操作栏开发人员指南的“使用应用程序图标进行导航”部分。

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

于 2013-01-23T15:50:25.263 回答
0

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

于 2015-03-15T18:16:24.317 回答
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>

字符串.xml

<resources>
    <string name="app_name">Your Desired Name</string>
    <string name="action_settings">Settings</string>
</resources>
于 2019-03-27T06:19:01.140 回答
0

您还可以执行以下操作:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
于 2020-01-12T09:31:40.510 回答