Как использовать изображение вместо метки активности в верхнем левом углу MainActivity в Xamarin Android (API 23) - PullRequest
0 голосов
/ 21 октября 2018

В верхнем левом углу основной активности моего приложения Xamarin для Android (с использованием API 23) в настоящее время у меня есть простой текст, который задается с помощью команды ниже.

[Activity(Label = "Activity Name", MainLauncher = true, Icon = "@drawable/appIcon", ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, ScreenOrientation = ScreenOrientation.Portrait)]

Эта строка помещается непосредственно перед

public class MainActivity : Activity
{
  // code for main activity
}

, и в результате я вижу текст «Имя действия» в верхнем левом углу моего приложения.
Мне было интересно, как я могу использовать изображение вместо этого в левом верхнем углу.Я видел, что свойство Label класса Activity принимает только строку, поэтому изменение Label не будет работать.Но я видел приложения, у которых есть значок или изображение, а не имя действия, поэтому мне было интересно, как это сделать?

РЕДАКТИРОВАТЬ

У меня естьпробовал со следующими строками в методе OnCreate () MainActivity:

var actionBar = this.ActionBar;
actionBar.SetIcon(Resource.Drawable.appIcon);
actionBar.SetLogo(Resource.Drawable.appIcon);
//actionBar.SetIcon(Resources.GetDrawable(Resource.Drawable.appIcon));

, но ни одна из них не работает.Там нет ошибки, он просто не показывает изображение, а только оригинальный текст, который я передал в качестве метки (в моем примере «Название деятельности»).Я также попытался полностью удалить ярлык, потому что думал, что он может занять все пространство, где предполагается показывать изображение, но это все еще не решает мою проблему.Я сделал это, добавив также:

actionBar.SetDisplayShowTitleEnabled(false);

Я уверен, что это правильное место для кода, так как, если я использую actionBar.Subtitle, я вижу, что субтитр добавлен правильно в панели действий.Не уверен, что это уместно, но у меня также есть следующее в AssemblyInfo.cs

[assembly: Application(Theme = "@android:style/Theme.Material.Light")]

. Как уже упоминалось, я использую Xamarin и API 23, чтобы сделать сравнение моего приложения с Android 6.0 +.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Я нашел решение.Мне просто нужно было добавить:

var actionBar = this.ActionBar;
actionBar.SetDisplayShowHomeEnabled(true);
actionBar.SetIcon(Resource.Drawable.appIcon);

SetDisplayShowHomeEnabled заставит иконку показываться.

0 голосов
/ 22 октября 2018

Попробуйте использовать следующий код

var actionBar = ((Activity)Context).ActionBar;
actionBar.SetIcon(Resource.Drawable.newIcon);// add the newIcon in the folder Drawable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...