Как я могу изменить имя приложения в xamarin android?

Объяснение

Метка значка перезаписывается меткой, указанной на моей метке основного действия.

Мой AndroidManifest.xml имеет:

<manifest>
<application android:label="@string/app_name" />
</manifest>

Мой AssemblyInfo.cs имеет:

#if DEBUG
[assembly:Application(Debuggable=true, Label="@string/app_name")]
#else
[assembly:Application(Debuggable=false, Label="@string/app_name")]
#endif

Мой String.xml имеет:

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

Мой MainActivity.cs имеет:

[Activity (Label = "Demo App")]

Когда я отправляю apk на телефон по электронной почте, gmail просит меня установить «MyApp», который, похоже, исходит из манифеста или сборки. Однако значок на экране запуска приложения показывает «Демонстрационное приложение», которое исходит от MainActivity.cs.

Вопрос

Я хочу, чтобы метка из действия отображалась как название приложения (демонстрационное приложение), тогда как я хочу, чтобы имя запуска приложения было «MyApp». Могу ли я как-то переопределить заголовок, чтобы это заработало?

Отвечать

Мой AndroidManifest.xml имеет:

<manifest>
<application android:label="@string/app_name" android:icon="@drawable/AppIcon"/>
</manifest>

В String.xml есть:

<string name="app_name">MyApp</string>
<string name="Home">Demo App</string>

В MainActivity.cs: вместо этого

[Activity (Label = "Demo App")]

используйте ActionBar, чтобы установить заголовок, значок. Тогда вы получите другое имя на экране запуска приложения и на главном экране.

[Activity(MainLauncher = true, LaunchMode = Android.Content.PM.LaunchMode.SingleTop,)]
public class MainActivity : Activity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.main);
        ActionBar.SetIcon(Resource.Drawable.Icon);
        ActionBar.SetTitle(Resource.String.Home);
    }
}

person Anish    schedule 19.01.2018    source источник
comment
Итак... вы хотите поменять местами два значения?   -  person Sam Axe    schedule 19.01.2018
comment
@SamAxe Нет, я не хочу менять местами какие-либо значения .. Я хочу показать имя экрана запуска приложения как «MyApp», но оно показывает «Демо-приложение» на экране запуска приложения, которое присутствует на странице активности. Он переопределяет имя приложения именем действия.   -  person Anish    schedule 19.01.2018
comment
вам нужно изменить в файле My String.xml сделать его как ‹string name=app_name›Любое имя здесь...‹/string›   -  person Gurudath G    schedule 19.01.2018
comment
@GurudathG Я дал имя в самом этом файле как ‹string name=app_name›MyApp‹/string›, оно не отображается на экране запуска приложения.   -  person Anish    schedule 22.01.2018


Ответы (1)


Я хочу, чтобы метка из действия отображалась как название приложения (демонстрационное приложение), тогда как я хочу, чтобы имя запуска приложения было «MyApp».

Удалите Label из MainActivity, установите приложение в Manifest.xml через пользовательский интерфейс или код:

<manifest ...>
    <application android:label="@string/app_name" />
</manifest>

Если ваш MainActivity равен AppCompatActivity, вы можете использовать Toolbar для отображения метки Activity:

[Activity(MainLauncher = true, LaunchMode = Android.Content.PM.LaunchMode.SingleTop, Icon = "@drawable/icon")]
public class MainActivity : AppCompatActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.main);
        var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
        if (toolbar != null)
        {
            SetSupportActionBar(toolbar);
            SupportActionBar.Title = "Demo App";
        }
    }
}

Эффект

Обновлять:

Вот мой toolbar.axml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar 
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    local:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

main.axml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />
</RelativeLayout>
person Eren Shen    schedule 22.01.2018
comment
Shen -MSFT Я использую MainActivity как Activity, так как я могу его использовать? - person Anish; 22.01.2018
comment
@ Аниш, ты можешь изменить свой тип MainActivity на AppCompatActivity? - person Eren Shen; 22.01.2018
comment
@ Аниш, рекомендуется использовать AppCompatActivity вместо Activity. - person Eren Shen; 22.01.2018
comment
@ Аниш, я опубликовал свой полный код, надеюсь, это поможет тебе. если есть еще какие-либо проблемы, пожалуйста, не стесняйтесь спрашивать. :) - person Eren Shen; 22.01.2018
comment
@ York Shen - MSFT Спасибо за ваше время. Я также попробую ваш ответ, но пока я его получил, я обновил свой вопрос, чтобы увидеть ответ. - person Anish; 22.01.2018
comment
@ York Shen - MSFT Да, конечно :) - person Anish; 22.01.2018