【问题标题】:How do I change the android actionbar title and icon如何更改 android 操作栏标题和图标
【发布时间】:2013-01-23 15:38:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: android android-layout android-actionbar


    【解决方案1】:

    这很容易实现

    如果你想在代码中改变它,调用:

    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中,这样标签/图标的变化对用户来说是透明的,但实际上它可以在活动生命周期的任何地方调用。

    【讨论】:

    • 如果您使用支持库添加操作栏,请使用getSupportActionBar 而不是getActionBar
    • getActionBar().setHomeButtonEnabled(true) 使用 API 级别 14 或更高级别,如果您只想要旧 API 和新 API 中的后退按钮功能,您只需要 getActionBar().setDisplayHomeAsUpEnabled(true)
    • getSupportActionBar().setDisplayShowTitleEnabled(true);在 setTitle("123"); 之前
    • 如果使用代码getActionBar().setIcon(R.drawable.my_icon);你能把它变成可点击的吗?
    • @JoseManuelAbarcaRodríguez 谢谢,这就是我所缺少的。在 Kotlin 中:supportActionBar?.setDisplayShowTitleEnabled(true) 然后是 supportActionBar?.title = "your title"。当使用startActivity 创建活动时,它必须在onResume 中完成,而不是在onCreate 中。
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢 - 我想要一个不同的应用程序外部图标(如“所有应用程序”中所示)和操作栏左侧的另一个图标。这奏效了。清单文件仍然有 android:icon="@drawable/ic_launcher"
    • 这是正确的方法,因为它pre-loads图标,以编程方式设置图标很慢!
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

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

      感谢article的作者

      【讨论】:

        【解决方案5】:

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

        getActionBar().setTitle("Test");
        

        【讨论】:

        • 如何为这个标题更改设置动画?
        【解决方案6】:

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

        android:icon="@drawable/ic_launcher"
        

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

        android:label="@string/app_name"
        

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

        希望这会有所帮助。

        【讨论】:

        • 活动标签中的 android:icon 应该是什么大小 (dp)?
        【解决方案7】:
        ActionBar actionBar = getSupportActionBar();
        actionBar.setTitle(getString(R.string.titolo));
        actionBar.setIcon(R.mipmap.ic_launcher);
        actionBar.setDisplayShowHomeEnabled(true);
        

        【讨论】:

          【解决方案8】:

          为此,您可以通过 2 种方式来实现:XML 或 Java。见这里:How to change the text on the action bar

          所以:

          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);
                 }
           }
          }
          

          【讨论】:

          • 要从代码中完成,您应该调用setTitle(CharSequence text)setTitle(int titleRes)。不要使用requestWindowFeature(Window.FEATURE_CUSTOM_TITLE),除非您打算用自己的自定义视图替换整个标题栏。
          【解决方案9】:

          设置标题

          getActionBar().setTitle("Title");
          

          设置图标

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

          【讨论】:

            【解决方案10】:

            我在onNavigationItemSelected 中使用了以下调用:

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

            【讨论】:

              【解决方案11】:

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

              setTitle("NewName");
              

              【讨论】:

                【解决方案12】:

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

                【讨论】:

                  【解决方案13】:

                  这对我有用:

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

                  【讨论】:

                    【解决方案14】:

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

                    要实现您所说的“返回”(更准确地说是“向上”)按钮功能,请阅读Action Bar developer guide 的“使用应用程序图标进行导航”部分。

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

                    【讨论】:

                      【解决方案15】:

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

                      【讨论】:

                        【解决方案16】:

                        转到 AndroidManifest.xml 文件。 找到&lt;application&gt; 标签 在那里你可以看到一个属性

                        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>
                        

                        【讨论】:

                          【解决方案17】:

                          你也可以这样做:

                          override fun onCreate(savedInstanceState: Bundle?) {
                                  super.onCreate(savedInstanceState)
                                  setContentView(R.layout.activity_main2)
                                  setSupportActionBar(toolbar)
                                  setTitle("Activity 2")
                              }
                          

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2020-11-13
                            • 1970-01-01
                            • 2015-02-03
                            • 1970-01-01
                            相关资源
                            最近更新 更多