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

All*_*rez 216 android android-layout android-actionbar

我正试图在Android上的ActionBar上做一些事情.

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

如何更改操作栏的左侧?我想更改图标和文本,我想在操作栏中为其他屏幕添加"后退按钮"

Android动作栏

dym*_*meh 500

这很容易实现

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

setTitle("My new title");
getActionBar().setIcon(R.drawable.my_icon);
Run Code Online (Sandbox Code Playgroud)

并将值设置为您想要的任何值.

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

<activity android:name=".MyActivity" 
       android:icon="@drawable/my_icon" 
       android:label="My new title" />  
Run Code Online (Sandbox Code Playgroud)

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

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您使用支持库添加操作栏,请使用`getSupportActionBar`而不是`getActionBar`. (22认同)
  • `getActionBar().setHomeButtonEnabled(true)`使用API​​级别14或以上,如果你只想要旧的以及更新的API的后退按钮功能,你只需要`getActionBar().setDisplayHomeAsUpEnabled(true)` (3认同)
  • getSupportActionBar().setDisplayShowTitleEnabled(true); 在setTitle("123")之前; (2认同)
  • @JoseManuelAbarcaRodríguez 谢谢你,这就是我所缺少的。在 Kotlin 中: `supportActionBar?.setDisplayShowTitleEnabled(true)` 然后 `supportActionBar?.title = "your title"`。当使用“startActivity”创建活动时,它必须在“onResume”中完成,而不是在“onCreate”中完成。 (2认同)

Aks*_*wal 17

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

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

    ...

</application>
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的方式,因为它"预加载"图标,编程设置图标很慢! (2认同)

Sag*_*nga 10

您只需添加这3行代码即可.用您自己的图标替换图标.如果要生成图标,请使用此选项

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)


Azz*_*zzy 10

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

启用它添加以下代码

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
Run Code Online (Sandbox Code Playgroud)

归功于本文作者


小智 9

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

getActionBar().setTitle("Test");
Run Code Online (Sandbox Code Playgroud)


Rob*_*men 6

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

android:icon="@drawable/ic_launcher"
Run Code Online (Sandbox Code Playgroud)

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

android:label="@string/app_name"
Run Code Online (Sandbox Code Playgroud)

无论你在他们身上有什么字符串.您必须为整个应用程序执行此操作,以及您想要的任何活动,但行是相同的.

希望这可以帮助.


Mil*_*loš 5

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

所以:

XML:

<activity android:name=".Hello_World"
              android:label="This is the Hello World Application">
</activity>
Run Code Online (Sandbox Code Playgroud)

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);
       }
 }
}
Run Code Online (Sandbox Code Playgroud)

  • 要从代码中执行此操作,您应该调用`setTitle(CharSequence text)`或`setTitle(int titleRes)`.除非您打算用自己的自定义视图替换整个标题栏,否则不要使用`requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)`. (2认同)

Ale*_*aro 5

ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)