it-roy-ru.com

Настройка заголовка и субтитров панели действий

Я хочу установить заголовок и подзаголовок панели действий перед временем компиляции. У меня есть способ сделать это так:

ActionBar ab = getActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");

Но я не хочу делать это во время выполнения. Есть ли XML-файл или место, где я могу указать эти заголовки?

Я пытаюсь добиться этого:

enter image description here

Правка:

Причина, по которой я хочу его в xml, заключается в том, что я хочу, чтобы мое приложение поддерживалось на уровне API 8. А метод getActionBar () поддерживается по крайней мере на уровне 11.

59
Adil Malik

Вы можете сделать что-то вроде этого, чтобы кодировать для обеих версий:

/**
 * Sets the Action Bar for new Android versions.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void actionBarSetup() {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    ActionBar ab = getActionBar();
    ab.setTitle("My Title");
    ab.setSubtitle("sub-title"); 
  }
}

Затем вызовите actionBarSetup() в onCreate(). if запускает код только в новых версиях Android, а @TargetApi позволяет скомпилировать код. Поэтому это делает его безопасным как для старых, так и для новых версий API.

Кроме того, вы также можете использовать ActionBarSherlock (, см. Edit ), чтобы вы могли иметь ActionBar во всех версиях. Вам нужно будет внести некоторые изменения, такие как расширение ваших действий SherlockActivity и вызов getSupportActionBar(), однако это очень хорошее глобальное решение.

Редактировать

Обратите внимание, что когда этот ответ был изначально написан, ActionBarSherlock, который с тех пор устарел , был решением для обеспечения совместимости.

В настоящее время библиотека appcompat-v7 от Google предоставляет те же функции, но поддерживается (и активно обновляется) компанией Google. Действия, которые хотят реализовать ActionBar , должны:

  • расширить AppCompatActivity
  • использовать Theme.AppCompat производную

Чтобы получить экземпляр ActionBar, использующий эту библиотеку, используется метод с подходящим именем getSupportActionBar().

89
A--C

Название для панели действий может быть в AndroidManifest, здесь:

<activity 
    . . .
          Android:label="string resource" 
    . . .
</activity>

Android: метка Читаемая пользователем метка для действия. Метка отображается на экране, когда действие должно быть представлено пользователю. Он часто отображается вместе со значком активности. Если этот атрибут не установлен, вместо него используется набор меток для приложения в целом (см. Атрибут label элемента). Метка действия - установленная здесь или с помощью элемента - также является меткой по умолчанию для всех фильтров намерений действия (см. Атрибут label элемента). Метка должна быть установлена ​​как ссылка на строковый ресурс, чтобы его можно было локализовать, как и другие строки в пользовательском интерфейсе. Однако для удобства при разработке приложения его также можно задавать как необработанную строку.

13
Rodrigo Amaro Reveco

Попробуй это:

Android.support.v7.app.ActionBar ab = getSupportActionBar();
ab.setTitle("This is Title");
ab.setSubtitle("This is Subtitle");
9
Pacific P. Regmi

Существует еще один вариант, который никто не прокомментировал, из библиотеки поддержки V7 была реализована Google ActionBarSupport, которая совместима ActionBar от Android 2.2 до последнего.
Если вы измените свое ActionBar, вы можете выполнить getSupportActionBar().setTitle("") во всех Android версиях.

5
user3144006
    <activity Android:name=".yourActivity" Android:label="@string/yourText" />

Поместите этот код в файл манифеста Android, и он должен установить заголовок панели действий на то, что вы хотите!

3
Rayyaan Mustafa

Нету! Вы должны сделать это во время выполнения.

Если вы хотите сделать ваше приложение обратно совместимым, просто проверьте уровень API устройства. Если оно выше 11, вы можете поиграть с ActionBar и установить субтитры.

if(Integer.valueOf(Android.os.Build.VERSION.SDK) >= 11){
    //set actionbar title
}
3
Victor KP

Попробуйте это

Просто зайдите в свой файл манифеста. и вы должны определить метку для каждого действия в файле манифеста.

<activity
        Android:name=".Search_Video"
        Android:label="@string/app_name"
        Android:screenOrientation="portrait">
    </activity>

здесь изменить

Android: метка = "@ строка/your_title"

1
Dharmendra Mishra

Попробуй это:

В strings.xml добавьте свой заголовок и подзаголовок ...

ActionBar ab = getActionBar();
ab.setTitle(getResources().getString(R.string.myTitle));
ab.setSubtitle(getResources().getString(R.string.mySubTitle));
1
drulabs

Это тривиальный однострочник в Котлине

supportActionBar?.title = getString(R.string.coolTitle)

1
SARose

Для действия вы можете использовать этот подход для указания подзаголовка вместе с заголовком в манифесте.

манифест:

<activity
    Android:name=".MyActivity"
    Android:label="@string/my_title"
    Android:description="@string/my_subtitle">
</activity>

активность:

try {
    ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
    //String title = activityInfo.loadLabel(getPackageManager()).toString();
    int descriptionResId = activityInfo.descriptionRes;
    if (descriptionResId != 0) {
        toolbar.setSubtitle(Utilities.fromHtml(getString(descriptionResId)));
    }
}
catch(Exception e) {
    Log.e(LOG_TAG, "Could not get description/subtitle from manifest", e);
}

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

0
ban-geoengineering
supportActionBar?.title = "Hola tio"
supportActionBar?.subtitle = "Vamos colega!"
0
Andrey

Вы можете установить заголовок в панели действий, используя AndroidManifest.xml. Добавить метку к activity

<activity
            Android:name=".YourActivity"
            Android:label="Your Title" />
0
Ricky