Android应用程序名称显示为活动名称

时间:2011-03-22 20:25:35

标签: android

我已经查看了应用程序的清单,并在应用程序启动器下显示为活动名称而不是其应用程序名称?为什么是这样。我有另一个应用程序,当我安装它时,应用程序中的每个活动有5个条目,当应该只有一个名称,应用程序的名称?因此,当我去发布时,它在启动列表中有5个相同名称的应用程序。这些以应用程序命名,但每个活动都有一个。这可能是什么原因?

6 个答案:

答案 0 :(得分:40)

以上接受的答案是错误的。它说,

  

该名称来自应用程序标记

上的android:label属性

那不是真的。以下面的代码为例。

<activity android:name="ApiDemos" android:label="@string/app_name">
     <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.DEFAULT" />
         <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
</activity>

在此代码中,启动器中显示的应用名称由android:label标记中的activity属性设置,而不是application标记,如上面接受的答案所示。

要更正上述已接受的回复,启动器中图标下方显示的名称来自入口点活动的android:label标记中的activity属性(包含{{1}的活动标记}和DEFAULT类别)除非你没有在那里指定,否则它来自LAUNCHER标记的android:label属性。

您的第一个问题可以通过更改入口点活动标记中的application属性来解决。

答案 1 :(得分:11)

对于第一个问题,您应该知道,如果在启动Activity时没有标签,则该名称来自应用程序标记的android:label属性中的默认标签集:

<application android:name="ApiDemosApplication"
   android:label="@string/activity_sample_code"
   android:icon="@drawable/app_sample_code">

如果Activity有标签,则会改为使用该标签。

对于第二个问题,在清单中,很可能您的所有活动都指定了一个具有android.intent.category.LAUNCHER操作的intent过滤器。例如:

<activity android:name="ApiDemos">
     <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.DEFAULT" />
         <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
</activity>

如果您对所有活动都有这样的intent-filter标记,则应该在除了要在启动时启动的Activity之外的所有标记上取出intent过滤器标记。如果此Activity有标签,则它将与启动器图标一起显示。

截至2019/01/03在API 27+上,似乎将启动具有LAUNCHER类别的第一个活动,其标签将与应用图标相关联,因此可能不是必需的删除所有冗余意图过滤器,但无论如何我都会这样做,因为它可能导致混淆。

答案 2 :(得分:7)

使用不同的应用程序名称(应用程序图标下显示的名称)和点击应用程序图标时正在启动的活动的不同名称的一种方法是在活动中明确设置不同的字符串&# 39; s onCreate()方法,如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  // Do your thing
  // ... bla bla bla

  getActionBar().setTitle(R.string.activity_title);
}

希望这有帮助!

答案 3 :(得分:2)

当您通过Eclipse创建Activity时,您的活动中的属性android:label会自动设置为AndroidManifest.xml中的“@ string / your_activity_name”。添加意图过滤器为此活动提供启动器,您的启动器获取与您的活动android:标签相同的标签。

如果要使用应用程序名称标记启动器,则应将Activities android:标签更改为“@ string / app_name”。

答案 4 :(得分:0)

运行Android 4.1.2版应用程序的名称将是&#34; static&#34;关于在活动中定义的标签设置为主启动器而不在任何意图过滤器中重写

答案 5 :(得分:0)

好像您想要在工具栏标题的位置放置图像视图。您必须将Android清单中特定活动的标签更新为android:label="";,这样您的活动名称才会在图像视图后显示在工具栏中,请使用以下代码设置图像视图带有导航图标,没有工具栏标题。

try {
    Toolbar  toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    toolbar.setTitle("");
    if (getSupportActionBar() != null)
        getSupportActionBar().setIcon(R.drawable.header_image_wt);
} catch (Exception e) {
    e.getMessage();
}